虽然setInterval很方便,但它有点限制。每次我想添加一个Tween我都要添加一个新方法。我不想改变我的代码结构只是为了增加一些延迟。没有任何方法可以说这个没有为A和B制作方法吗?
// do A
// wait N seconds
// do B
我不想在日期中使用while
循环,因为我认为它会阻塞。 ActionScript中没有类似Thread.sleep
的内容吗?
答案 0 :(得分:3)
Flash ActionScript虚拟机(AVM)是单线程的。任何循环或睡眠功能都会导致整个SWF在所需的时间间隔内冻结。
据我所知,在AS3中没有等同于Thread.sleep
的情况,如果有的话,由于上述原因,它不会做你想要的。
为什么不想使用功能?
如果您希望获得比setInterval
优惠更强大的功能和/或灵活性,则可以使用timers。
编辑:您可以内联定义函数(技术上称为closures);这听起来可能更接近你想要的东西。例如:
setInterval(function () {
// code for A
setInterval(function () {
// code for B
}, 1000);
}, 1000);
答案 1 :(得分:1)
如果您不反对使用方法,请尝试使用TweenLite。它允许您玩各种时间。
例如,完成动画后,您可以调用以下内容:
//call myFunction() after 2 seconds, passing 1 parameter: "myParam"
TweenLite.delayedCall(2, myFunction, ["myParam"]);
这可能会为您提供所需的延迟。