为什么补间会随机停止?

时间:2008-11-21 01:27:29

标签: flash actionscript-3

使用如下代码,有时子控件正确完成动画,有时它们会停在中间的随机位置。他们为什么不能正常工作?

var t:Tween;
t = new Tween(child1,"x",Elastic.easeOut,0,100,2,true);
t = new Tween(child1,"y", Elastic.easeOut,0,100,2,true);
t = new Tween(child2,"x",Strong.easeOut,300,400,1,true);
t = new Tween(child2,"y", Strong.easeOut,300,400,1,true);

3 个答案:

答案 0 :(得分:4)

此外,尝试使用免费/开源补间引擎,而不是使用Flash打包的引擎。两个非常受欢迎的是TweenLiteTweener。它们提供更高的性能和更多的功能/选项。

答案 1 :(得分:3)

必须将每个补间分配给全局范围内的单独变量。以下代码可靠地运行:

var t1:Tween = new Tween(child1,"x",Elastic.easeOut,0,100,2,true);
var t2:Tween = new Tween(child1,"y", Elastic.easeOut,0,100,2,true);
var t3:Tween = new Tween(child2,"x",Strong.easeOut,300,400,1,true);
var t4:Tween = new Tween(child2,"y", Strong.easeOut,300,400,1,true);

当重新使用变量时,似乎不再引用的补间可能会在其工作过程中被垃圾收集或停止。

如果您使用单独的变量但是在函数的本地范围内而不是在框架的全局范围内声明它们,则会出现同样的问题。

答案 2 :(得分:1)

您还可以在类的范围内创建一个数组,然后将补间推送到该数组。虽然这可能导致数组中的补间永远不会收集垃圾,即使它们完成后也是如此,因此您可能希望在知道所有补间已完成的位置自己清空数组。