通常我会监听 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
stage.Invalidate 将强制舞台重绘。不建议您首先解决时间问题。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)