0

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

这是要重现的简单闪存代码:

   
 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。

只是检查是否有其他人遇到过这种情况,或者是否与我进行填充/帧循环的方式有关。任何帮助将不胜感激。

4

1 回答 1

2

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

this.graphics.clear();

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

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

于 2010-12-23T22:42:42.720 回答