Comunidad de diseño web y desarrollo en internet online

Maldito problema con lo Listeners!! Por favor una solución.

Citar            
MensajeEscrito el 30 Sep 2008 12:17 am
Les explico... Básicamente hay 2 cosas que me dificultan a la hora de programar. Una es mi intelecto xD y la otra son los fucking Listener... Me pasa que cada vez que creo uno de estos Listener, y por alguna razón en el juego decidí borrar el MC que contenía esta función... comienzan los errores tras los errores.
¿Hay manera de poder borrar al MC junto con sus listener?
O alguna idea o manera de evitar que queden los LIstener "Sueltos" molestándome.

Trate con un DispatcherEvent, de manera que al momento de eliminar un MC le enviara una "advertencia" y así borrase el sus propios listeners... Mi problema es que no se por que... no se "recoger" Eventos creados desde el root, dentro de un MC... Simplemente si pongo "addEventListener("miEvent", funcion)" no recoje el evento...

¬¬ Alguna solución PORFAVOR.

Por JaLeRu

Claber

1913 de clabLevel

7 tutoriales

Genero:Masculino  

Existo

firefox
Citar            
MensajeEscrito el 30 Sep 2008 07:33 am
No sé exactamente cuál es el problema y sé que lo que te digo ya lo sabes, pero aún así...
removeChild() sólo elimina de la "display List" el Sprite o el MC. Además habrá que
1.- usar removeEventListener para eliminar todos los eventos asociados a dicho MC
2.- usar un delete miObjeto para eliminar el objeto
Si pusieras un pequeño ejemplo quizá quedase más claro.

Por Eliseo2

710 de clabLevel



 

firefox
Citar            
MensajeEscrito el 30 Sep 2008 08:37 pm
Tal como dice Eliseo, tenes q usar removeListener para eliminar el evento, por ejemplo

Código :

// agregar listener
bt = new MiButton();
bt.addEventListener(MouseEvent.CLICK, onClickHandler);
conteiner.addChild(bt);
.
.
.
// eliminar listener y objeto
bt.removeListener(MouseEvent.CLICK, onClickHandler);
delete container.removeChild(bt);
bt = null;


Otra manera de solucionar eso es talvez usando Week reference

Código :

bt.addEventListener(MouseEvent.CLICK, onClickHandler, false, 0, true);

Con eso evitas ciertos "errores" si te olvidas de remover el listener

Por otro lado... hasta q no aparezca el FP 10, no hay manera de eliminar un objeto y q de manera automatica se elimen los listeners asociados a el

Saludos!

Por alfathenus

833 de clabLevel

5 tutoriales

 

buenos aires || Argentina

firefox
Citar            
MensajeEscrito el 30 Sep 2008 09:12 pm

alfathenus escribió:

Tal como dice Eliseo, tenes q usar removeListener para eliminar el evento, por ejemplo

Código :

// agregar listener
bt = new MiButton();
bt.addEventListener(MouseEvent.CLICK, onClickHandler);
conteiner.addChild(bt);
.
.
.
// eliminar listener y objeto
bt.removeListener(MouseEvent.CLICK, onClickHandler);
delete container.removeChild(bt);
bt = null;


Otra manera de solucionar eso es talvez usando Week reference

Código :

bt.addEventListener(MouseEvent.CLICK, onClickHandler, false, 0, true);

Con eso evitas ciertos "errores" si te olvidas de remover el listener

Por otro lado... hasta q no aparezca el FP 10, no hay manera de eliminar un objeto y q de manera automatica se elimen los listeners asociados a el

Saludos!

Gracias, lo probare...
Es que yo si sabia borrar listeners... Pero mi problema es que cuando borro el MC de manera "inprevista" no puedo hacerle un removeListener...

Por JaLeRu

Claber

1913 de clabLevel

7 tutoriales

Genero:Masculino  

Existo

firefox
Citar            
MensajeEscrito el 30 Sep 2008 09:20 pm
**! Una pregunta extra..
Por que eliminas el objeto así:
<code>delete container.removeChild(bt); bt = null;</code
en vez de solo usar el removeChild.

Por JaLeRu

Claber

1913 de clabLevel

7 tutoriales

Genero:Masculino  

Existo

firefox
Citar            
MensajeEscrito el 30 Sep 2008 09:45 pm
No le des bola... no tienen sentido usar un delete en ese caso... lo puse demas

saludos!

Por alfathenus

833 de clabLevel

5 tutoriales

 

buenos aires || Argentina

firefox
Citar            
MensajeEscrito el 30 Sep 2008 10:20 pm
OK thanks ;)

Por JaLeRu

Claber

1913 de clabLevel

7 tutoriales

Genero:Masculino  

Existo

firefox
Citar            
MensajeEscrito el 01 Oct 2008 07:32 am
Jaleru, con un removeChild() SÓLO eliminamos de la display List el objeto, así que NO nos olvidemos el bt=null (personalmente prefiero usar delete bt)
echalé un vistazo al Gran Skinner

Por Eliseo2

710 de clabLevel



 

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.