我有一個創建的組件,它的工作方式類似於Viewstack,但下一個索引組件從四個邊中的一個滑入。我的工作效果很好,可以使用,但我想讓它更有效率。用Flex在大量組件中平滑滑動動畫
現在,我使用Canvas作爲基礎組件,使用ImageSnapshot(new Bitmap(ImageSnapshot.captureBitmapData(this))
)創建當前視圖的快照,並在索引更改時將新索引放在該圖像的頂部。
我基本上尋找如何做到這一點的更好方法的建議。通過在組件加載之後拍攝圖像,並在幻燈片發生後,我已經將初始毛刺移動降至最低,但我們通常將此用於轉換網格,因此在第一張或第一張幻燈片上它幾乎總是很慢。
下面是一些它看起來像迄今:
private function creationComplete(e:Event):void
{
tmpImage.source = new Bitmap(ImageSnapshot.captureBitmapData(this));
}
public function set selectedIndex(value:int):void
{
if(_selectedIndex == value + 1)
return;
_selectedIndex = value+1;
var obj:UIComponent;
tmpImage.height = height;
tmpImage.width = width;
tmpImage.visible = true;
tmpImage.x = 0;
//tmpImage.includeInLayout = true;
for (var i:int = 1; i < numChildren; i++)
{
obj = UIComponent(getChildAt(i));
//obj.x = width;
if(i == _selectedIndex){
obj.visible = true;
objDisplay = obj;
}
else
obj.visible = false;
}
mv1.target = tmpImage;
mv2.target = objDisplay;
switch (direction)
{
// X/Y sliding logic
}
parEfect.play();
tmpImage.source = new Bitmap(ImageSnapshot.captureBitmapData(this));
}
如果你用1
琢磨,我使用的畫布圖像索引0,且偏移我的自定義的selectedIndex如果需要,我會發布更多,但我希望將問題保持在最低限度,這幾乎總結了它。
任何幫助,非常感謝!我真的想讓這個組件更好地運行。此外,這必須使用Flex 3完成
爲什麼試圖重新發明輪子?你可以擴展viewstack(其中你的selectedIndex是一個準確的值),並簡單地讓你的mv1和mv2成爲你的showEffect和hideEffect。下面是一個示例(在Flex4中),它爲Moves添加了緩動功能:http://help.adobe.com/en_US/flex/using/WS2db454920e96a9e51e63e3d11c0bf5fdc3-7fe2.html – 2010-11-22 22:26:18
這個人有一個關於使用ImageSnapshot的Swipe效果的教程,也許它可以有一些幫助:http://insideria.com/2009/12/flex-101-creating-an-swipeslid.html – Ryan 2010-11-23 09:57:09
@jeremy我真的不想重新發明輪子,我只需要知道什麼最好。當我從我的vaca回來時,我會檢查放鬆。發佈它作爲答案,如果你想我的觀點:-) @bishop我也會檢查出來,謝謝你的建議 – wajiw 2010-11-23 23:28:21