AS3 — Приостановка при потере фокуса

#actionscript-3 #timer #focus

#actionscript-3 #таймер #фокус

Вопрос:

Я работаю над мобильной флеш-игрой. Если приложение теряет фокус (например, поступает вызов) Мне нужно, чтобы таймер игры остановился, пока фокус не будет восстановлен. Вот мой текущий код, но я получаю «Ошибку несоответствия количества аргументов» в Deactivate (). Ожидалось 0, получено 1.

Я думаю, вот соответствующий код:

 addEventListener(Event.ACTIVATE, onActivate);
addEventListener(Event.DEACTIVATE,onDeactivate);

public function onActivate():void {
    addEventListener(Event.ENTER_FRAME, showTime);
}

public function onDeactivate():void {
    removeEventListener(Event.ENTER_FRAME, showTime);
}
  

Я получаю ошибку при тестировании во flash и закрываю окно. Чего я не понимаю? Спасибо за любую помощь, которую вы можете предложить.

Комментарии:

1. Вы пропустили аргумент event, ваши обработчики событий должны выглядеть следующим образом: public function onActivate(e:Event):void {} и public function onDeactivate(e:Event):void {} .

Ответ №1:

OnActivate и OnDeactivate являются прослушивателями событий. Это означает, что они будут вызываться с аргументом события. Дайте им что-то вроде этого: onDeactivate(event:Event):void .

Комментарии:

1. И если вы не получаете ошибок при OnActivate, это означает только, что он не вызывается 🙂

2. Я думаю, что правильный термин — обработчики событий, поскольку они обрабатывают события, хотя это не имеет большого значения, я просто любитель терминологии.

3. Работает. Спасибо. Думал, что я уже пробовал что-то подобное, но, похоже, нет.