Показать сообщение отдельно
Старый 13.09.2013, 16:00
Universe вне форума Посмотреть профиль Отправить личное сообщение для Universe Найти все сообщения от Universe
  № 1  
Ответить с цитированием
Universe
 
Аватар для Universe

Регистрация: Feb 2010
Сообщений: 811
Отправить сообщение для Universe с помощью ICQ Отправить сообщение для Universe с помощью Skype™
Arrow Тормоза таймера при высоких частотах повторений

Для представления проблемы приведу следующий пример:
Код AS3:
import flash.events.TimerEvent;
 
var mySeconds:int = 0;
var firstTime:Number = 0;
var myDate:Date = new Date();
var myTimer:Timer = new Timer(10, 200);
 
myTimer.addEventListener(TimerEvent.TIMER, onTimer);
myTimer.addEventListener(TimerEvent.TIMER_COMPLETE, onTimerComplete);
myTimer.start();
 
trace("Timer Start", myDate.getSeconds());
 
function onTimer(e:TimerEvent):void
{
	myDate = new Date();
	mySeconds += 10;
	trace(mySeconds);
}
 
function onTimerComplete(e:TimerEvent):void
{
	var curTime:Number = myDate.getSeconds() - firstTime;
	trace("Timer Complete", curTime);
}
Пример выше выполняет обычный трейс за отведённое время, т.е. раз в 10 милисекунд, 200 раз. Если посчитать, в секундах, выполнение таймера должно завершиться через 2 сек. Однако это время растягивается до 4 сек, я уже не говорю какая разница во времени будет, если поставить например 2000 раз, раз в милисекунду. Вопрос знатокам: изза чего происходит такой разбег по времени?