Flash动画的CPU性能问题

时间:2010-06-24 10:19:26

标签: flash performance animation cpu

在运行我当前的应用程序时,我有一段时间试图将CPU降低到45%以下。我已经尝试了各种优化技巧和提示但收效甚微,而我现在处于需要基础的地步 不同的方法。

问题和当前方法

在我的应用程序的主视图中,我有一个enterframe处理程序。 我的帧速率低至10 fps。此处理程序使用Lee Brimelow's wedge class通知16个单独的影片剪辑以绘制不同角度的楔形。

所以,每enterframe次16次,我有16个movieclip图形清晰,开始填充,绘制楔形,填充所有由我的单enterframe处理程序协调。

这样做会使我的CPU达到40-50%之间:o

可能的替代方案?

我有一个想法,就是有一个360帧长的电影剪辑,并使用蒙版显示一个圆圈的片段,但我不是动画师,也不知道如何制作这样的面具。

问题

所以,我猜我的方法不会削减它。任何人都可以建议一种更好的方法来实现我的目标吗?

我看不出每帧画16个楔形=如此高的CPU,所以我必须做一些根本错误的事情。

有什么想法吗?

主要事件功能

private function updatePadProgress(e:Event):void
        {

            viewStackContainer.remixscreen.padUIManager.updatePadArcs2(this.model.audioEngine._channels)
        }

循环播放所有圈子传递值

public function updatePadArcs2(channels:Vector.<Channel>):void
        {
            var pc:PadContainer;
            var input:Input
            var c:int=0;
            var p:int=0;
            var pct:Number;
            var cc:Channel
            var position:int=0
            var len:int=0


            for (var i:int=0; i < pads.length; ++i)
            {
                pc=pads[i];
                c=pc.channelassign;
                p=pc.padassign;

                input=channels[c].inputs[p];

                if (input.currentState == Input.ACTIVE)
                {

                    position=input.inputAudio.samples.position
                    len=input.inputAudio.samples.length
                    pct= position/len 
                    pc.drawProgress(pct)

                }

            }


        }

绘图功能

public function drawProgress(pct:Number):void
        {
            pad.drawOn.graphics.clear()
            pad.drawOn.graphics.beginFill(0x000000)
            Wedge.draw(pad.drawOn,0,0,10,360,0)
            pad.drawOn.graphics.endFill()
        }

2 个答案:

答案 0 :(得分:1)

对我有用的解决方案是在舞台上设置任何不需要每帧更新的资产作为位图缓存。

它将我的CPU降低到20%

答案 1 :(得分:0)

我认为这可能是因为整个屏幕需要重新粉刷的事实。如果缩小尺寸或省略填充,它的表现会更好吗?

修改 code for drawing the wedges看起来不错。绘制1000行不应该真正导致大的性能损失。然而,填充大区域可能。如果你对同一个像素进行了16次拍摄,那么它实际上可能会被绘制16次(优化任意形状的绘制并不是那么明显)。

格尔茨
back2dos