ActionScript 2.0/3.0是否有类似于C# sleep()的等待函数?
不是真的。你可以使用类似以下代码来阻止(几乎全部)代码执行:
function sleep(ms:int):void {
var init:int = getTimer();
while(true) {
if(getTimer() - init >= ms) {
break;
}
}
}
trace("hello");
trace(getTimer());
sleep(5000);
trace("bye");
trace(getTimer());
但我不知道这在flash中如何有用。 同时,像上面的代码一样的任何东西都是一个非常糟糕的想法,因为播放器将会冻结并且变得无响应(如果您超过默认的15秒的超时限制,它还可能会给出一个脚本超时)。
如果你仅想延迟执行一段代码,你可以使用一个计时器对象或setTimeout函数。这将是非阻塞的,但是你必须使用一些类似于TandemAdam建议的标志。最好情况下,这将是脆弱的。
也许有更好的方法解决你的问题,但是从你的问题中不清楚你试图实现什么。
sleep
函数:function sleep(counter: int, subsequentFunction: Function, args: Array): void
{
if (counter > 0)
callLater(sleep, [counter - 1, subsequentFunction, args]);
else
callLater(subsequentFunction, args);
}
在暂停后应该处理的函数中调用它。
// call trace('Hello') after 100 cycles
sleep(100, trace, ['Hello']);
// call myFunction() after 50 cycles
sleep(50, myFunction, []);
没有类似于 C# sleep 函数的 ActionScript/Flash Player 等效功能。毕竟,Flash 不使用多个线程。
您必须手动实现该功能。
您可以使用布尔标志,仅当为 true 时,您的代码才会执行。然后使用 Timer 类 进行延迟。