Как остановить выполнение в ActionScript - PullRequest
6 голосов
/ 02 октября 2009

Есть ли способ остановить выполнение в ActionScript, например, метод sleep ()?

Я знаю, что есть метод setTimeout (), но setTimeout () просто устанавливает событие для отложенного выполнения.

Ответы [ 4 ]

3 голосов
/ 02 октября 2009

Нет. Там нет сна. Сожалею.

Смотрите мой ответ здесь для вариантов: ActionScript: помещать замыкание в стек событий? . Это не говорит о сне, но я попытался дать обзор отложенного вызова функции.

1 голос
/ 10 июня 2011

Вы должны думать о том, что не спит . Actionscript не такой язык. Поскольку флеш-плеер чередует рендеринг кадров и выполнение кода, сон в коде - это всегда плохая идея, поэтому нет способа сделать это.

Сказав это, вы могли бы достичь этого, используя метод блокировки ExternalInterface.call и выполняя в Javascript метод блокировки (например, запрос XHR).

Абсолютно идиотский, хотя, так что не делайте этого.

Возможно, вам нужен Timer.

0 голосов
/ 02 октября 2009

Да, хотя есть время ожидания 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...
}
0 голосов
/ 02 октября 2009

Нет способа приостановить все выполнение приложения, как в PHP, но есть обходные пути (если вы не установили точку останова или не создали ошибку времени выполнения специально, не думайте, что это то, что вы имели в виду). Возможно, это связано с тем, что обычно флэш-приложения предназначены для выполнения всех сценариев менее чем за один «кадр».

Обычно можно «приостанавливать» анимацию веб-сайта, когда пользователь не фокусирует его. Это можно сделать, прослушав Event.DEACTIVATE, а затем удалите прослушиватели ENTER_FRAME и завершите все текущие процессы.

Вы также можете создать центральный EventDispatcher для замены внутреннего ENTER_FRAME, таким образом, вы без проблем сможете контролировать скорость выполнения, а также приостанавливать / возобновлять работу (не останавливая выполнение скриптов или асинхронных обработчиков, таких как загрузчики и т. Д.)

...