「bigList」と呼ばれるボタンでいっぱいの大きな動的ムービークリップを繰り返しビルドおよび再構築するルーチンがあります。再構築するときは、最初にbigListをトラッシュして、そのインスタンスをステージに繰り返し追加しないようにします(しばらくの間実行していました)。
私はトリックを行うように見えるこのコードを思いついた:
if (bigList.stage)
{
trace("...bigList exists, better trash it");
bigList.parent.removeChild(bigList);
bigList = null;
bigList = new MovieClip();
trace("...done trashing.");
}
動作しているようです...私が心配しているのは、ガベージコレクションやメモリリークなどです。上記を実行することにより、古いbigListを適切に削除して新しいものに置き換えるのでしょうか、それとも、処理する必要のあるデータがメモリ内に存在するのでしょうか。
これに加えて、bigListをビルドするたびに、動的に生成された数十のmcが追加され、それぞれにクリックをチェックするイベントリスナーがあります。毎回bigListをゴミ箱に捨てるとき、それらのインスタンスとリスナーもすべて立ち往生していますか?
bigListのすべての子をトラバースして、それらとそのリスナーもゴミ箱に移動する必要がありますか?それを行う効率的な方法はありますか、トップレベルのオブジェクトとそのすべてのサブオブジェクトとリスナーをゴミ箱に捨てますか、それとも私が持っているコードですでにそれを取得していますか?
本当にありがとう!