2015-02-10 17 views
0

我需要製作一個動畫,其中有許多從左到右飛行的對象(約500個),具有不同的延遲,持續時間和目的地。 但是,我需要運行另一個功能,一旦所有的對象已經到達他們的目的地。如何在as3中使用綠色按鈕補間數個對象?

我試圖讓一個循環檢查每次當一個對象完成其飛行時間。那就是:

... 
for(var i:int = 0; i < objs.length; i++) 
    Tweenlite.to(obj[i], duration, {delay:delay, x:destination.x, y:destination.y, onComplete:CheckAllComplete}); 
... 

private function CheckAllComplete():void 
{ 
    for(var i:int =0 ;i < objs.length; i++) 
    { 
     if(Tweenlite.getTweensOf(obj[i]).length > 0) 
      return; 
    } 
    ... // if all the flights complete 
} 

但是我認爲這對於CPU來說是非常笨重的。

所以,我的問題是,如何我認爲所有的對象作爲一個吐溫,只是添加onComplete來解決這個問題?

類似:

var tween:*; 
for(...) 
    tween.add(obj[i], duration, {...}); 
tween.onComplete = CompleteCallback; 
+0

我相信你可以創建一個索引,並增加它每次Tween完成時,檢查這個索引是否等於您的對象數量。如果是這樣,您可以停止該過程。 – gabriel 2015-02-10 08:02:31

回答

0

根據你自己的代碼(我沒有檢查,看看是否作品或有任何錯誤)

private var tweenObjectsIndex:uint = 0; 
private var numObjects:uint = objs.length; 

for(var i:int = 0; i < numObjects:uint; i++) 
Tweenlite.to(obj[i], duration, {delay:delay, x:destination.x, y:destination.y, onComplete:CheckAllComplete}); 

    private function CheckAllComplete():void 
    { 
     tweenObjectsIndex++; 
     // if all the flights complete 
     if(tweenObjectsIndex == numObjects) // do something 
    } 
+0

你的意思是沒有退出任何方法來處理補間和一個onComplete回調? – user3711105 2015-02-17 03:18:33

+0

有辦法處理,我只舉了一個例子。 – gabriel 2015-02-17 12:07:20

+0

好的,但是,其實,我想尋找一種解決方案,可以避免檢查每個補間。 – user3711105 2015-02-18 01:28:59

相關問題