ActionScript(Flash)中的延迟? setInterval的替代方案

时间:2010-04-23 14:05:54

标签: actionscript-3

虽然setInterval很方便,但它有点限制。每次我想添加一个Tween我都要添加一个新方法。我不想改变我的代码结构只是为了增加一些延迟。没有任何方法可以说这个没有为A和B制作方法吗?

// do A
// wait N seconds
// do B

我不想在日期中使用while循环,因为我认为它会阻塞。 ActionScript中没有类似Thread.sleep的内容吗?

2 个答案:

答案 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"]);

这可能会为您提供所需的延迟。