0

通常我会听 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 进行此测试

4

1 回答 1

1

stage.Invalidate 将强制舞台重绘。它不建议您首先解决您的时间问题。

于 2013-02-06T16:05:17.643 回答