2015-02-10 61 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