我想知道你是否可以获得自动作脚本定时器启动以来经过的毫秒数。
我想在flex中设置一个简单的标签,其值为定时器触发前的时间(再次)。
这是代码,在'GET ELAPSED TIME',我需要计时器一直运行的时间(因为它上次触发了函数):
var timer = new Timer (10000);
timer.addEventListener(TimerEvent.TIMER, foo);
timer.start();
var numberOfSeconds = timer.delay-timer.'GET ELAPSED TIME';
resetLabel.text = "only "+numberOfSeconds+" until foo fires";
这是否可以让定时器存在时间以及如何调用(google未能回复我)?
答案 0 :(得分:2)
没有不动产可以获得Timer
的剩余时间。解决方法可能是在foo
函数中添加一个检查。基本设置看起来像这样:
var realDelay:int = 10000;
var timer:Timer = new Timer (1);
timer.addEventListener(TimerEvent.TIMER, foo);
timer.start();
function foo(e:TimerEvent) : void
{
var realCount:int = Math.floor(timer.currentCount/realDelay);
var timeLeft:Number = (realDelay-timer.currentCount%realDelay);
resetLabel.text = "Real count: " + realCount + ", milliseconds left: " + timeLeft;
}
答案 1 :(得分:2)
不幸的是,内置的Timer不支持你想要的东西。这是一个非常简单的包装类,可以像Sam DeHaan的建议一样获得整体持续时间。
package utility
{
import flash.utils.Timer;
import flash.utils.getTimer;
/**
* DurationTimer
* Description:
* Extending Timer class to help show elapsed time
**/
public class DurationTimer extends Timer
{
private var _startTime:int;
private var _endTime:int;
public function DurationTimer( delay:Number, repeatCount:int = 0 )
{
super( delay, repeatCount );
}
public function get duration():int
{
return ( running ) ? getTimer() - _startTime : _endTime - _startTime;
}
override public function start():void
{
_startTime = getTimer();
super.start();
}
override public function stop():void
{
_endTime = getTimer();
super.stop();
}
}
}