我的班级中的计时器在间隔超过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();
答案 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");
}
}
}