質問

私は子供と他の定期的に交換する必要があるコンテナを持っています。これらの子供たちはスプライトで、Mouse_Downイベントのための1つの弱い参照イベントリスナーがあります。私が子供の中でRemoveChildを呼び出すと、コンテナからNumChildrenが0に減少しますが、まだフラッシュに表示されています。私はコンテナを削除して新しいものを再作成しようとしましたが、まだ機能しません。また、イベントリスナーなしでは、代わりにいくつかのDummy Simple Spriteを追加しようとしましたが、結果はありませんでした。私はガベージコレクターが私が望むように機能していないと思います:)

スプライトを作成するための私のコード:

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;
.

役に立ちましたか?

解決

I don't think it has anything to do with Garbage Collector. Are you 100% sure that the itemHolder in second code is the same as the itemHolder in the first? Perhaps you could try adding trace("Yep, this code executes") to the second snippet and see if it executes for sure? That, or the problem lies somewhere else in your code I think.

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top