В ActionScript 3 введен новый класс Timer (
flash.utils.Timer), который заменяет устаревшую функцию setInterval (
flash.utils.setInterval()), хоть setInterval пока и оставлена, использовать ее не рекомендуется. В отличие от setInterval класс Timer рассылает события (
flash.events.TimerEvent), а значит на один таймер можно навесить сколько угодно обработчиков. Кроме того, Timer дает возможность контролировать сколько раз должен сработать таймер.
Пример:
Код:
var timer:Timer = new Timer(500, 10);
timer.addEventListener(TimerEvent.TIMER, notifier);
timer.addEventListener(TimerEvent.TIMER, stopper);
stage.addEventListener(MouseEvent.CLICK, continuer);
function notifier(event:TimerEvent):void {
trace(timer.currentCount);
}
function stopper(event:TimerEvent):void {
switch (timer.currentCount) {
case 5:
timer.stop();
break;
case timer.repeatCount:
timer.reset();
break;
}
}
function continuer(event:MouseEvent):void {
timer.start();
}
timer.start();
Здесь timer 10 раз подряд посылает событие TimerEvent.TIMER каждые 500 миллисекунд. На событие добавлены два обработчика, один выводит номер текущей итерации, другими словами, сколько раз уже сработал таймер (свойство currentCount), а другой останавливает таймер после 5-го срабатывания (метод stop), или сбрасывает счетчик итераций (метод reset), когда количество итераций достигает максимально заданного (свойство repeatCount). Кликом мышки по сцене можно заново запустить остановленный таймер (метод start).
Результат выполнения:
Код:
1
2
3
4
5
(пауза; клик для продолжения)
6
7
8
9
10
(пауза; клик для продолжения)
1
2
3
4
5
...