Question

J'ai un conteneur avec des enfants qui doivent être remplacés périodiquement par d'autres.Ces enfants sont des sprites et ils ont un faible auditeurs d'événements référencés pour l'événement de la souris.Lorsque j'appelle Removechild sur les enfants, les numéros de conteneur diminuent à 0, mais ils sont toujours visibles en Flash.J'ai même essayé de supprimer le conteneur et de la recréer neuf mais cela ne fonctionne toujours pas.Aussi essayé d'ajouter un sprite simple factice à la place, sans aucun auditeur d'événement, mais cela n'a apporté aucun résultat.Je suppose que le collectionneur des ordures ne fonctionne pas comme je souhaite :)

Voici mon code de création de 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);
}

et code pour supprimer:

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;

Était-ce utile?

La solution

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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top