Спящий в действии сценарий 2 с использованием метода getTimer()
Как я могу правильно выполнить что-то вроде sleep
использовать функцию getTimer()
? Мне нужно делать действие каждые 15 секунд. Код ниже не работает. Я собираю это с mtasc
Компилятор на Linux.
class Tuto
{
static var lastMsg = 0;
static var msgInt = 15000;
static function main(mc)
{
if(getTimer() > lastMsg + msgInt)
{
trace("something");
lastMsg = getTimer();
}
}
}
1 ответ
main
Инструкция будет выполнена только один раз. Вы должны создать какой-то цикл или полагаться на тиковые события, посылаемые игроком, чтобы выполнять ваш код непрерывно.
Основные варианты:
while (true) { doSomething() }
это будет выполняться вечно, но помните, что flashplayer является однопоточным, поэтому при запуске все остальное будет заморожено, включая пользовательский интерфейс и пользовательский ввод. это только "хорошо", если вы создаете какой-то тяжелый инструмент обработки, который не нуждается во взаимодействии с пользователем.
setInterval(doSomething, 15000)
это создает интервал, который будет вызывать вашу функцию каждые X миллисекунд. Это самый простой вариант и, вероятно, то, что вы ищете.
addEventListener(Event.ENTER_FRAME, doSomething)
при этом регистрируется прослушиватель события ENTER_FRAME Flash Player, которое будет отправляться 30 раз в секунду (по умолчанию). Внутри этой функции вы можете проверить текущее время с помощью getTimer()
и решить, пора ли выполнить вашу логику.