Flash(as3)cpu使用率稳步攀升至80 +%,进行简单的填充循环

时间:2010-12-23 22:12:08

标签: flash actionscript-3 cpu-usage fill flex

我最近一直在摆弄闪光灯,我遇到了这个问题。我注意到,当我每帧都进行任何填充时,我的cpu使用率会缓慢而稳定地攀升,直到达到85-90%。使用flashPlayerDebugger.exe(来自flex sdk)以及查看broswer中的swf时也会发生这种情况。内存使用量似乎也在缓慢增长,但永远不会失控。

以下是重现的简单flash代码:

   
 import flash.display.Sprite;
 import flash.events.Event;

 public class test extends Sprite 
 {
  public function test():void 
  {
   stage.addEventListener(Event.ENTER_FRAME, everyFrame);
  }

  private function everyFrame(e:Event):void
  {
   this.graphics.beginFill(0x000000);
   this.graphics.drawRect(100, 100, 100, 100);
   this.graphics.endFill();
  }
 }


似乎可以使用其他填充形状(例如drawRect,drawCircle等),也可以使用beginBitmapFill。

我似乎无法找到其他任何具有相同问题的实例(搜索过adobe dev论坛,actionscript.org以及此网站等),所以我不知道这是不是我的问题结束,或者如果是闪光问题。

我正在运行最新版本的flash(目前为10.1.102.64),但我也尝试使用旧版本的flashPlayerDebugger.exe(10.1.53.64)并遇到了同样的问题。我正在运行Windows 7。

只是检查是否有其他人遇到过此问题,或者是否有关于我正在进行填充/帧循环的方式。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:2)

请注意,每次绘制时都不会清除图形,而是不断向Sprite添加新填充的形状,这些形状都将被重绘。添加

this.graphics.clear();

在每次抽奖行动之前,你的表现应该会好很多。

另外:你应该总是用那些ENTER_FRAME循环来约束自己 - 在大多数情况下,会有一个成本较低的解决方案,比如MOUSE_MOVE或Timers。