【发布时间】:2015-02-10 02:44:36
【问题描述】:
我需要制作一个动画,其中有许多物体(大约 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;
【问题讨论】:
-
我相信您可以创建一个索引并在每次补间完成时增加它,并检查该索引是否等于您的对象数。如果是这样,您可以停止该过程。
标签: actionscript-3 gsap