我想知道如何在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世界编辑中的触发器编辑器。
答案 0 :(得分:2)
由于AS3中只有一个线程,因此无法在不停止整个项目的情况下实现这一点。可以通过异步方式完成许多事情(例如从网络加载某些东西),但如果您的特定操作不支持异步操作,那么使用计时器是最好的方法。
可以编写一个封装类来封装定时器处理,这样就不需要多次编写定时器代码了。您可以编写类似RepeatTaskManager
的内容,它将执行函数对象,该函数的任何必需参数,函数连续调用之间的延迟以及调用函数的次数。这样,您只能在一个地方使用计时器代码,并在需要此类功能时轻松使用RepeatTaskManager
。