2012-02-23 83 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(); 
     } 
    } 
}