Функция Сна Сценария действия [дубликат]

11
задан Kemrop 9 June 2010 в 21:04
поделиться

3 ответа

Не совсем. Вы можете заблокировать (почти весь) выполнение кода с помощью чего-то вроде:

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. В лучшем случае он будет хрупким.

Может быть, есть лучший подход к вашей проблеме, но непонятно, чего вы пытаетесь достичь в своем вопросе.

19
ответ дан 3 December 2019 в 04:51
поделиться

Нет ActionScript / Flash Player не имеет эквивалента функции сна в C #. Во-первых, Flash не использует несколько потоков.

Вам придется реализовать эту функциональность вручную.

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

1
ответ дан 3 December 2019 в 04:51
поделиться

Вы можете реализовать функцию 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, []);

Преимущество этого подхода в том, что пользовательский интерфейс все еще реагирует во время сна.

3
ответ дан 3 December 2019 в 04:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: