如何使用greensock补间as3中的多个对象?

时间:2015-02-10 02:44:37

标签: actionscript-3 greensock tweenlite

我需要制作一个动画,其中有许多物体(大约500个)从左到右飞行,具有不同的延迟,持续时间和目的地。 但是,一旦所有对象都已到达目的地,我需要运行另一个函数。

每次物体完成飞行时,我都试图进行循环检查。那就是:

...
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;

1 个答案:

答案 0 :(得分: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
  }