有没有办法停止ActionScript中的执行,比如sleep()方法?
我知道有一个setTimeout()方法,但是setTimeout()只是为延迟执行设置一个事件。
答案 0 :(得分:3)
没有。没有睡觉。抱歉。
请在此处查看我的答案:ActionScript: pushing a closure onto the event stack?。它没有谈论睡眠,但我试图提供延迟函数调用的概述。
答案 1 :(得分:1)
你需要考虑不睡觉。 Actionscript不是那种语言。因为flash播放器在帧渲染和代码执行之间交替,所以在代码中睡觉总是一个坏主意,这就是为什么没有方法可以做到这一点。
话虽如此,你可以通过使用阻塞方法ExternalInterface.call来实现这一点,并在Javascript中执行阻塞方法(如XHR请求)。
虽然绝对是愚蠢的,所以不要这样做。
也许您需要的是Timer
。
答案 2 :(得分:0)
没有办法在PHP中暂停所有应用程序的执行,但有一些解决方法(除非您设置断点或故意创建运行时错误,不要认为这就是您的意思)。可能这是因为通常flash应用程序意味着在不到一个“帧”中执行所有脚本。
当用户没有聚焦时,能够“暂停”网站的动画是很常见的。这可以通过监听Event.DEACTIVATE然后删除ENTER_FRAME监听器并终止所有正在进行的进程来完成。
您还可以创建一个中央EventDispatcher来替换内部的ENTER_FRAME,这样您就可以无缝地控制执行速度以及暂停/恢复(不会停止执行脚本,也不会停止异步处理程序,例如加载程序等)。
答案 3 :(得分:-4)
是的,虽然知道15秒的脚本超时。 (您可以在发布设置中更改该15秒脚本超时...)
我在过去发现,如果你正在寻找这个功能,你做错了什么:)
无论你想要完成什么,都可能需要一个事件监听器。
//adding this ENTER_FRAME event listener just to show that the script pauses for one
// second before the first frame executes
addEventListener( Event.ENTER_FRAME, onFrame );
function onFrame( event:Event ):void {
trace( "first frame occurs after pause of", getTimer() + " ms" );
removeEventListener( Event.ENTER_FRAME, onFrame );
};
var startTime:int = getTimer();
var pauseTime:int = 1000;
while( ( getTimer() - startTime ) < pauseTime ) {
//do nothing... we're effectively pausing here...
}