0

フラッシュ アプリケーションに問題があります。これは、実行してからしばらくすると、最終的に速度が低下し始めるためです。私のアプリケーションには、addChild() メソッドで複製する必要があるものがあります。アプリケーションの速度低下または遅延の原因は、 removeChild() がメモリから子を削除しないことであると述べているインターネット上の情報を読みました。

子供をメモリから削除する方法はありますか? どんな入力でも大歓迎です。ありがとう。

4

2 に答える 2

1

Grant Skinner による AS3 のリソース管理に関する3 部構成の記事をご覧ください。

于 2010-07-30T05:13:29.207 に答える
1

新しいオブジェクトを作成してステージに追加し、不要なオブジェクトをステージから削除しているようです。これにより、メモリに不要なオブジェクトがたくさんあるため、速度が低下する可能性があります。フラッシュ AS3 では、ガベージ クリーンアップを完全に GC に頼ることはできません。したがって、最善の方法は、新しいオブジェクトが必要なときはいつでも、最小限のガベージを生成し、未使用のオブジェクトをリサイクルすることです。
たとえば、アプリケーションは一定の時間間隔でステージにいくつかの円を配置し、それらのいくつかを削除し続けます。したがって、この種のリソースにはリソース プールを実装します。

 public class ResourcePool {
  static function getCircle(prop:Object):Circle {
    //check if you already have some circle objects
    //if yes pick one apply the prop and return
    // else create a new circle with specified prop and return
  }
  static function recycle(circle:Circle):void {
    //add it to available resource array
  }
}
円オブジェクトが必要な場合は、ResourcePool にそれを要求します。
 var c:Circle = ResourcePool.getCircle(someProperty);
また、円を削除するときはいつでも、後で使用できるように適切にリサイクルしてください。
//remove circle1 object
ResourcePool.recycle(circle1);

于 2010-07-30T05:30:35.107 に答える