在功能内等待/睡眠

时间:2014-09-01 00:17:43

标签: actionscript-3 system sleep wait

我想知道如何在AS3中使用睡眠/等待系统内部功能而不会立即暂停整个项目,以下是我通常的做法:

function doubleBoom():void
{
    boom();
    setTimeout(boom, 1);// calls boom after a 1 second delay
}

以下是我想要的方式:

function doubleBoom():void
{
    boom();
    wait(1);// this function doesn't exist, that's what im trying to solve
    boom();
}

这种方法对我来说有很多好处,例如提高可读性并允许我内联延迟功能。它基于魔兽争霸3世界编辑中的触发器编辑器

1 个答案:

答案 0 :(得分:2)

由于AS3中只有一个线程,因此无法在不停止整个项目的情况下实现这一点。可以通过异步方式完成许多事情(例如从网络加载某些东西),但如果您的特定操作不支持异步操作,那么使用计时器是最好的方法。

可以编写一个封装类来封装定时器处理,这样就不需要多次编写定时器代码了。您可以编写类似RepeatTaskManager的内容,它将执行函数对象,该函数的任何必需参数,函数连续调用之间的延迟以及调用函数的次数。这样,您只能在一个地方使用计时器代码,并在需要此类功能时轻松使用RepeatTaskManager