Получить таймеры истекшего времени - PullRequest
2 голосов
/ 23 февраля 2012

Интересно, можно ли получить количество миллисекунд, прошедшее с момента запуска таймера действия.

Я хочу установить простую метку в 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 не смог мне ответить)?

Ответы [ 2 ]

2 голосов
/ 11 марта 2014

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

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();
        }
    }
}
2 голосов
/ 23 февраля 2012

Нет недвижимости, чтобы получить оставшееся время вашего 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; 
}
...