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

questionAnswers(1)

yourAnswerToTheQuestion