2012-02-23 12 views
2

actionscriptタイマーが開始してから経過したミリ秒数を取得できるのだろうかと思います。タイマーの経過時間を取得する

フレックスで簡単なラベルを設定したいのですが、タイマーが(もう一度)起動するまでにどれくらいの時間がかかりますか?

これはコードで、「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"; 

は、タイマーの時間を取得するには、この機能をいを存在し、どのように呼び出されます(Googleは私に答えることができませんでした)?

+0

getTime()関数を知っていますか?このような単純な間隔をお望みなら、flash.utils.setInterval関数とflash.utlis.clearInterval関数について、タイマーよりも簡単に読むことができます。 – turbosqel

答えて

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は私が推測するタイマーの遅延ですか? –

+0

これはいくつかのバリエーションがこの作業を行う唯一の方法であるように思われます。ただし、ここで使用されているcurrentCountメソッドではなく、Flash Player VMが開始時刻の格納と時刻の比較を開始してから、getTimer()を使用して時刻を取得することをお勧めします。 –

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(); 
     } 
    } 
} 
関連する問題