Flex Timer问题

时间:2011-09-30 18:43:43

标签: flash flex4 timer air

我的班级中的计时器在间隔超过5秒或测量5秒后似乎根本不会发出任何TIMER事件。我需要测量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

当interval为30000且repeatCount为1时,我没有输出

计时器永远不会完成。

我尝试使用setTimeout,但30秒的超时也不起作用。

如何添加30秒的超时?

修改

//declare timer
public var tmr as Timer;

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

1 个答案:

答案 0 :(得分:2)

如果你只想将延迟设置为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");
        }

    }
}