旋转精灵的EnterFrame监听器KILLS我的帧率?

时间:2016-12-24 19:54:40

标签: actionscript-3 listener frame-rate

嗯,我不是新手,也不是专家,但我发现这很奇怪。我有一个类创建一个图像数组,并在一个ENTER_FRAME监听器函数中旋转它们,一个动画gif
精细。
我添加了另一个ENTER_FRAME监听器,它以0.5度的增量旋转对象,直到它达到23.5度,但是我的frameRate减速为爬行。 坏了!
有一次我把一个getTimer()设备放到第一个监听器来测量它的调用速度,我看到旋转监听器没有大约20ms ,旋转监听器处于活动状态时看到200-250ms 。
另外值得注意的是,当旋转侦听器达到23.5度并自行关闭时,frameAdvance侦听器的调用保持不变(非常慢)。

我班上的职能:

    private function drawThis():void {
        removeEventListener(Event.ENTER_FRAME, wait4images);            
        for (var i:int = 0; i < shapeLoader.ShapeArr.length; i++) {
            addChild(shapeLoader.ShapeArr[i]);
        }

        //stage.addEventListener(Event.ENTER_FRAME, rotateme);
             //like this, it works quickly!

        stage.addEventListener(Event.ENTER_FRAME, rotateme);
             //like this, it is very slow!

        graphics.lineStyle(2,0xff0000)
        graphics.moveTo(0, -this.width / 2);
        graphics.lineTo(0, this.width / 2);
        addEventListener(Event.ENTER_FRAME, frameAdvance,false,0,true);
    }

    private function rotateme(e:Event):void{
        this.rotation += .5;
        if (this.rotation == 23.5) {
            stage.removeEventListener(Event.ENTER_FRAME, rotateme);
        }
    }

    private function frameAdvance(e:Event):void {
        frameNo += 1;   
        addChild(shapeLoader.ShapeArr[frameNo]);
        if (frameNo == 23) {
            frameNo = 0;
        }
    }

有关于这个问题的任何想法/解释/解决方案吗?

0 个答案:

没有答案