带Flash动画的CPU性能问题

带Flash动画的CPU性能问题,flash,performance,animation,cpu,Flash,Performance,Animation,Cpu,在运行当前应用程序时,我一直在努力将CPU降低到45%以下。我尝试过各种各样的优化技巧,但收效甚微,现在我需要一个基本的解决方案 不同的方法 问题和当前方法 在应用程序的主视图中,我有一个enterframe处理程序。 我的帧速率降到了10 fps。此处理程序通知16个单独的电影剪辑使用绘制不同角度的楔块 因此,每enterframe16次,我就有16部电影唇形图清晰,开始填充,绘制楔形,结束填充,所有这些都由我的单个enterframe处理程序协调 这样做会将我的CPU增加到40-50%:o

在运行当前应用程序时,我一直在努力将CPU降低到45%以下。我尝试过各种各样的优化技巧,但收效甚微,现在我需要一个基本的解决方案 不同的方法

问题和当前方法 在应用程序的主视图中,我有一个
enterframe
处理程序。 我的帧速率降到了10 fps。此处理程序通知16个单独的电影剪辑使用绘制不同角度的楔块

因此,每
enterframe
16次,我就有16部电影唇形图清晰,开始填充,绘制楔形,结束填充,所有这些都由我的单个
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)

                }

            }


        }

我想这可能是因为整个屏幕需要重新粉刷。如果减小尺寸或省略填充,它的性能会更好吗

编辑:图像看起来不错。绘制1000条线不应该真的会对性能造成很大影响。然而,填充大面积区域可能会增加。如果你点击同一个像素16次,那么它有可能被实际绘制了16次(优化任意形状的绘制并不那么明显)

格里茨

back2dos对我来说,有效的解决方案是在stage上设置任何资产,而不需要在每个帧缓存为位图时更新这些资产


它将我的CPU降低到20%

谢谢你的回复。您是否建议减小圆的大小可以提高性能?目前,每个圆的半径为10像素。@AT:好的,这几乎不是问题所在。尝试省略应用程序的不同部分以隔离performancekiller。如果使用空的
drawProgress
-例程,它的运行情况如何?如果使用空的drawProgress例程,cpu将下降到20%
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()
        }