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、およびこのサイトなどを検索しました)ので、それが私の側にあるのかどうかはわかりません。フラッシュの問題の場合。

最新バージョンのフラッシュ (現在は 10.1.102.64) を実行していますが、古いバージョンの flashPlayerDebugger.exe (10.1.53.64) も試してみましたが、同じ問題が発生しました。Windows 7を実行しています。

他の誰かがこれに遭遇したかどうか、またはそれが私の塗りつぶし/フレームループの実行方法に関するものかどうかを確認するだけです. どんな助けでも大歓迎です。

4

1 に答える 1

2

描画するたびにグラフィックスをクリアするのではなく、新しい塗りつぶされた形状を常にスプライトに追加することに注意してください。これらはすべて再描画されます。追加

this.graphics.clear();

すべてのドロー アクションの前に、パフォーマンスが大幅に向上するはずです。

また、これらの ENTER_FRAME ループは常に抑制してください。ほとんどの場合、MOUSE_MOVE や Timers などのよりコストのかからない解決策があります。

于 2010-12-23T22:42:42.720 に答える