Pregunta

Tengo un contenedor con niños que deben ser reemplazados por otros periódicamente.Esos niños son sprites y tienen un evento de eventos de eventos de referencia de referencia para Mouse_Down.Cuando llamo a Removechild en los niños, los niños del contenedor disminuyen a 0, pero todavía son visibles en Flash.Incluso intenté eliminar el contenedor y recrearlo nuevo, pero aún así no funciona.También intenté agregar un poco de sprite simple simulado, sin ningún tipo de oyentes de eventos, pero no trajo ningún resultado.Supongo que el recolector de basura no está funcionando como lo deseo :)

Aquí está mi código para crear 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);
}

y código para eliminar:

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;

¿Fue útil?

Solución

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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top