舞台力量渲染/重绘

时间:2013-02-06 10:09:46

标签: actionscript-3 flex

通常我会监听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

1 个答案:

答案 0 :(得分:1)

stage.Invalidate将强制重绘阶段。不建议您先解决时间问题。

相关问题