PDA

Просмотр полной версии : Таймер показывает разные значения


In8Finity
13.04.2011, 13:05
У меня есть таймер, который я останавливаю нажатием кнопки и далее показываю его значение.
Мне хотелось бы, чтобы результат отображался довольно точно - в тысячных долях секунды. Поэтому я использую шаг в одну тысячную.
Код примерно такой:

public var timer:Timer;
.....
public function timerListener(evt:TimerEvent):void {
trace("запускаем таймер");
counter = 0;
timer = new Timer(1, 0);
timer.addEventListener(TimerEvent.TIMER, timerListener2);
timer.start();
}

public function timerListener2(evt:TimerEvent):void { counter++}


После запуска таймера я должен как можно скорее нажать на кнопку, чтобы его остановить и посмотреть значение.
Так вот, если я компилирую это во флеше или запускаю просто локально swf, то значения каунтера при нажатии кнопки у меня как и полагается - 200-300 миллисекунд.
А если запускаю эту же флешку в фаирфоксе через html - значения на порядок меньше - 10-20-30 миллисекунд.
Подскажите, почему такая разница в скорости и как это побороть?

ChuwY
13.04.2011, 13:38
Немного о таймере (http://help.adobe.com/ru_RU/FlashPlatform/reference/actionscript/3/flash/utils/Timer.html#Timer())

delay:Number — Задержка в миллисекундах между событиями таймера. Не рекомендуется задавать свойству delay значение меньше 20 миллисекунд. Частота объекта Timer ограничена 60 кадрами в секунду, то есть задержка меньше 16,6 миллисекунд вызывает проблемы во время выполнения.

Zebestov
13.04.2011, 13:41
Лучше использовать flash.utils.getTimer() (http://help.adobe.com/ru_RU/FlashPlatform/reference/actionscript/3/flash/utils/package.html#getTimer()). При запуске сохранить значение в поле класса. При клике вычесть сохраненное значение из текущего.

In8Finity
13.04.2011, 14:12
Zebestov: Спасибо. Так действительно оказалось проще.