通常我会监听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
答案 0 :(得分:1)
stage.Invalidate将强制重绘阶段。不建议您先解决时间问题。