通常我会听 ENTER_FRAME 事件并在每次渲染帧时执行代码。但是对于我的应用程序来说,这太慢了。2 个 ENTER_FRAME 事件之间的时间为 40 毫秒。如果我改变我的帧率也没关系。
那么是否可以在不监听事件的情况下强制 flash 重绘/渲染帧?我尝试了 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 进行此测试