通常、フレームがレンダリングされるたびに ENTER_FRAME イベントをリッスンし、コードを実行します。しかし、私のアプリケーションでは、これは遅すぎます。2 つの 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 イベントを送出します。これら 2 つのイベント間の平均時間は 52 ミリ秒です。そして、その時間を短縮したい
ちなみに、このテストではフレームレートを 180 に設定しました