Не совсем. Вы можете заблокировать (почти весь) выполнение кода с помощью чего-то вроде:
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());
Но я не понимаю, как это может быть полезно во флэш-памяти. И в то же время что-либо подобное приведенному выше коду - очень плохая идея, поскольку игрок зависнет и перестанет отвечать (а также может дать тайм-аут скрипта, если вы превысите лимит тайм-аута, который по умолчанию равен 15).
Если вы просто хотите отложить выполнение фрагмента кода, вы можете использовать объект Timer или функцию setTimeout. Однако это не будет блокировать, поэтому вам придется использовать какой-то флаг, например, предложенный TandemAdam. В лучшем случае он будет хрупким.
Может быть, есть лучший подход к вашей проблеме, но непонятно, чего вы пытаетесь достичь в своем вопросе.
Нет ActionScript / Flash Player не имеет эквивалента функции сна в C #. Во-первых, Flash не использует несколько потоков.
Вам придется реализовать эту функциональность вручную.
Вы можете использовать логический флаг, чтобы ваш код выполнялся только тогда, когда он истинен. Затем используйте класс таймера для задержки.
Вы можете реализовать функцию 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, []);
Преимущество этого подхода в том, что пользовательский интерфейс все еще реагирует во время сна.