stage force render / redraw
Normalnie słuchałbym zdarzenia ENTER_FRAME i uruchamiał kod za każdym razem, gdy renderowana jest ramka. Ale dla mojej aplikacji jest to zbyt wolne. Czas między 2 zdarzeniami ENTER_FRAME wynosi 40 milisekund. Nie ma znaczenia, jeśli zmienię szybkość odtwarzania.
Czy więc można zmusić flash do przerysowania / renderowania ramki bez słuchania zdarzeń? Wypróbowałem metodę stage.invalidate () i zmieniłem ilość klatek na sekundę, ale to niczego nie poprawia (stage.invalidate () nic nie robi)
Zrobiłem mały test, aby zobaczyć średni czas między zdarzeniem ENTER_FRAME a zdarzeniem 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();
}
Jeśli mam rację, zdarzenie ENTER_FRAME jest uruchamiane przed renderowaniem tej ramki, a zdarzenie EXIT_FRAME jest uruchamiane po renderowaniu. Po zdarzeniu EXIT_FRAME renderowanie jest zakończone i aplikacja wyśle zdarzenie ENTER_FRAME. Średni czas między tymi dwoma zdarzeniami wynosi 52 milisekundy. I chcę skrócić ten czas
W tym teście ustawiłem szybkość odtwarzania na 180