2012-02-23 70 views
2

我想知道是否可以获取自动作计时器启动后经过的毫秒数。获取计时器已用时间

我想在flex中设置一个简单的标签,它具有在计时器触发(多次)之前需要多长时间的值。

这是代码,在'GET经过时间,我需要一个计时器已经运行(因为它最后一次发射的功能)的时间:

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"; 

,这种功能得到定时器时间存在和它如何被称为(谷歌未能回答我)?

+0

您知道吗(new Date())。getTime()函数?如果你喜欢做这样简单的时间间隔,阅读flash.utils.setInterval和flash.utlis.clearInterval函数,比定时器更容易。 – turbosqel 2012-02-23 14:09:50

回答

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; 
} 
+0

realdelay是我猜的定时器延迟? – 2012-02-23 18:00:29

+0

有些变化似乎是完成这项工作的唯一方法。我建议使用'getTimer()'来获得自Flash Player VM开始存储开始时间并比较时间以来的时间,而不是此处使用的currentCount方法。 – 2012-02-23 21:34:37

2

不幸的是在计时器构建不具备你想要什么样的支持。这是一个非常简单的包装类,它可以像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(); 
     } 
    } 
}