Domanda

Ho un contenitore con bambini che devono essere sostituiti da altri periodicamente.Quei bambini sono sprificati e hanno un debole listener di eventi di riferimento per il Mouse_Down Event.Quando chiamo Removechild sui bambini, i numilpisti dal contenitore diminuiscono a 0 ma sono ancora visibili in flash.Ho anche provato a rimuovere il contenitore e ricrearne uno nuovo ma non funziona ancora.Ho anche provato ad aggiungere un po 'di sprite semplice fittizio, senza ascoltatori di eventi, ma non ha portato risultati.Presumo che il collezionista della spazzatura non funziona come desidero :)

Ecco il mio codice per creare sprites:

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

e codice per la rimozione:

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

È stato utile?

Soluzione

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top