定期的に他の人と交換する必要がある子供がいるコンテナがあります。これらの子はスプライトであり、MOUSE_DOWNイベントの弱い参照イベントリスナーが1つあります。子に対してremoveChildを呼び出すと、コンテナのnumChildrenは0に減少しますが、フラッシュには表示されたままです。コンテナを削除して新しいコンテナを再作成しようとしましたが、それでも機能しません。また、代わりに、イベントリスナーを使用せずに、ダミーの単純なスプライトを追加しようとしましたが、結果は得られませんでした。ガベージコレクターが期待どおりに機能していないと思います:)
スプライトを作成するための私のコードは次のとおりです。
itemHolder=new Sprite();
addChild(itemHolder);
itemHolder.y=itemHolderY;
var itemY:Number=0;
for(var i:Number=0;i<modelBarList.bars.length;i++){
var item:bar_list_item;
item=new bar_list_item();
item.name="item"+i;
/*
setting properties for item
*/
itemHolder.addChild(item);
item.y=itemY;
item.mouseChildren=false;
item.buttonMode=true;
itemY+=item.height;
item.addEventListener(MouseEvent.MOUSE_UP,barSelected,false,10,true);
}
そして削除するためのコード:
while(itemHolder.numChildren){
var item:Sprite=Sprite(itemHolder.getChildAt(0));
item.removeEventListener(MouseEvent.MOUSE_UP,barSelected,false);
itemHolder.removeChild(item);
item=null;
}
removeChild(itemHolder);
itemHolder=null;