Как остановить выполнение в ActionScript
есть ли способ остановить выполнение в ActionScript, например метод sleep ()?
Я знаю, что есть метод setTimeout (), но setTimeout () просто настраивает событие для отложенного выполнения.
4 ответов
нет. Нет никакого сна. Извиняюсь.
см. мой ответ здесь для опций:ActionScript: нажатие закрытия в стек событий?. Это не говорит о сне, но я попытался дать обзор отложенного вызова функции.
вам нужно думать в терминах не спать. Actionscript - это не тот язык. Поскольку flash player чередуется между отрисовкой кадров и выполнением кода, спящий режим в коде всегда плохая идея, поэтому нет никакого метода, чтобы сделать это.
нет способа приостановить все выполнение приложения, как в PHP, но есть обходные пути (если вы не установили точку останова или не создали ошибку времени выполнения специально, не думайте, что это то, что вы имели в виду). Вероятно, это связано с тем, что обычно flash-приложения предназначены для выполнения всех сценариев менее чем за один "кадр".
обычно можно "приостановить" анимацию веб-сайта, когда пользователь расфокусирует его. Это можно сделать, прослушав событие.Деактивировать, а затем удалить ENTER_FRAME слушатель и убить все текущие процессы.
вы также можете создать центральный EventDispatcher для замены внутреннего ENTER_FRAME, таким образом, вы легко контролируете скорость выполнения, а также приостановку / возобновление (не прекратит выполнение скриптов, ни асинхронных обработчиков, таких как загрузчики и т. д. хотя.)
Да, есть, хотя имейте в виду 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...
}