在as3中尽早调用计时器事件监听器

时间:2011-06-10 22:39:03

标签: actionscript-3 events timer callback

我有代码:

var timer:Timer = new Timer(milliseconds, repititions);
timer.addEventListener(TimerEvent.TIMER, callback);
timer.start();

如果用户点击我想尽早调用回调。有没有办法强制计时器立即完成,或者停止它并自己发送TimerEvent.Timer

我正在寻找像补间类fforward()这样简单的东西。

修改

解决方案是

timer.dispatchEvent(new TimerEvent(TimerEvent.TIMER));

我试图timer.dispatchEvent(new TimerEvent("TIMER"));做不起作用。

3 个答案:

答案 0 :(得分:1)

var evt:TimerEvent = new TimerEvent(TimerEvent.TIMER);
timer.dispatchEvent(evt);

答案 1 :(得分:0)

按钮调用我的示例中的函数我将其称为onDoEvent 然后,onDoEvent将使用正确的“CLICK”事件调用timer事件回调。

import fl.controls.Button

var milliseconds:int = 3000;
var repititions:int = 0;
var timer:Timer = new Timer(milliseconds, repititions);
timer.addEventListener(TimerEvent.TIMER,onTimerEvent );


var btn_start:Button = new Button( );
btn_start.label = 'start';
btn_start.x = 0;
btn_start.addEventListener( MouseEvent.CLICK, onStart );
this.addChild( btn_start );
function onStart( e:Event ):void{
    timer.start();
}

var btn_stop:Button = new Button( );
btn_stop.label = 'stop';
btn_stop.x = 150;
btn_stop.addEventListener( MouseEvent.CLICK, onStop );
this.addChild( btn_stop );
function onStop( e:Event ):void{
    timer.stop();
}



var btn_doEvent:Button = new Button( );
btn_doEvent.label = 'Trigger Event';
btn_doEvent.x = 300;
btn_doEvent.addEventListener( MouseEvent.CLICK, onDoEvent );
this.addChild( btn_doEvent );
function onDoEvent( e:Event ):void{
    onTimerEvent( new TimerEvent("CLICK") );
}




function onTimerEvent(e:TimerEvent){
    trace('TimerEvent was triggered');
}

答案 2 :(得分:0)

var timer:Timer = new Timer(milliseconds, repititions);
timer.addEventListener(TimerEvent.TIMER, callback);
timer.start();

function callback(e:TimerEvent):void{
   //to do what
}

以最简单的方式调用,只需像这样调用函数。

callback(null);