2012-02-23 1 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"; 

ли эта функция, чтобы получить время таймеров существуют и как это называется (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

Некоторые варианты этого, кажется, единственный способ сделать эту работу. Я бы рекомендовал использовать 'getTimer()', чтобы получить время с момента, когда Flash Player VM начал хранить время начала и затем сравнить время, а не метод currentCount, используемый здесь. –

2

К сожалению, в Timer нет поддержки того, что вы хотите. Вот очень простой класс-обертка, чтобы получить общую продолжительность, подобную предложению Сэма ДеХаана.

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(); 
     } 
    } 
}