Рендеринг / перерисовка сцены
Обычно я слушаю событие ENTER_FRAME и выполняю код каждый раз при рендеринге фрейма. Но для моего приложения это слишком медленно. Время между двумя событиями ENTER_FRAME составляет 40 миллисекунд. Не имеет значения, если я изменю свою частоту кадров.
Так можно ли заставить вспышку перерисовывать / рендерить кадр без прослушивания событий? Я попробовал метод stage.invalidate () и изменил частоту кадров, но это ничего не улучшает (stage.invalidate () на самом деле ничего не делает)
Я сделал небольшой тест, чтобы увидеть среднее время между ENTER_FRAME и событием EXIT_FRAME:
private var beginTime:Number;
private var endTime:Number;
public function init():void {
addEventListener(Event.ENTER_FRAME, enterFrame);
addEventListener(Event.EXIT_FRAME, exitFrame);
}
private function enterFrame(e:Event):void {
beginTime = new Date().getTime();
if(endTime) {
trace(beginTime - endTime);
}
}
private function exitFrame(e:Event):void {
endTime = new Date().getTime();
}
Если я прав, событие ENTER_FRAME вызывается до рендеринга этого кадра, а событие EXIT_FRAME вызывается после рендеринга. Поэтому после события EXIT_FRAME рендеринг завершен, и приложение отправит событие ENTER_FRAME. Среднее время между этими двумя событиями составляет 52 миллисекунды. И я хочу сократить это время
Кстати, для этого теста я установил частоту кадров 180