Проблема с Flex Timer - PullRequest
       0

Проблема с Flex Timer

0 голосов
/ 30 сентября 2011

Таймер в моем классе, похоже, вообще не запускает никаких событий ТАЙМЕРА, когда интервал больше 5 секунд или после того, как он измерил 5 секунд.Мне нужно измерить 30 секунд.

Вот мой код

//class ctor
public function myClass() {
    tmr=new Timer(5000, 6);
    tmr.addEventListener(TimerEvent.TIMER_COMPLETE, timerComplete);
    tmr.addEventListener(TimerEvent.TIMER, timerTrace);
}
private function timerComplete(e:TimerEvent):void {
    trace("complete");
}
private function timerTrace(e:TimerEvent):void {
    trace("tick|" + tmr.currentCount);
}

Я получаю вывод

tick|1

Когда я изменяю интервал на 1000 мс, а repeatCount на30, я получаю

tick|1
tick|2
tick|3
tick|4

Когда интервал равен 30000, а repeatCount равен 1, я не получаю вывод

Таймер не завершается.

Я пытался использовать setTimeout, ноТайм-аут 30 секунд там тоже не работает.

Как мне добавить тайм-аут 30 секунд?

РЕДАКТИРОВАТЬ

//declare timer
public var tmr as Timer;

//external class
nyClassInstance.tmr.start();

1 Ответ

2 голосов
/ 01 октября 2011

Если вы хотите установить задержку только на 30 секунд, вы должны сделать это следующим образом:

_timer = new Timer(30 * 1000, 1);
_timer.addEventListener(TimerEvent.TIMER_COMPLETE, onTimerComplete);
_timer.start();

Пример: http://wonderfl.net/c/4duo/

package
{
    import flash.display.Sprite;
    import flash.utils.Timer;
    import flash.events.TimerEvent;
    import flash.text.TextField;
    import flash.utils.getTimer;

    public class FlashTest extends Sprite
    {
        private var _timer : Timer;
        private var _lastUpdate : int;
        private var _debugText : TextField;

        public function FlashTest()
        {
            _debugText = new TextField();
            addChild(_debugText);

            _lastUpdate = getTimer();

            _timer = new Timer(6 * 1000, 6);
            _timer.addEventListener(TimerEvent.TIMER, onTimerUpdate);
            _timer.addEventListener(TimerEvent.TIMER_COMPLETE, onTimerComplete);
            _timer.start();

            _debugText.appendText("STARTED");
        }

        private function onTimerUpdate(event : TimerEvent) : void
        {
            _debugText.appendText("\n" + (getTimer() - _lastUpdate) + " - UPDATE " + _timer.currentCount);

            _lastUpdate = getTimer();
        }

        private function onTimerComplete(event : TimerEvent) : void
        {
            _debugText.appendText("\nCOMPLETE");
        }

    }
}
...