Comunidad de diseño web y desarrollo en internet online

Efectos NEW sobre objeto

Citar            
MensajeEscrito el 17 Mar 2010 12:16 pm
Pongamos por ejemplo, que creamos un movieclip:

Código ActionScript :

var clip:MovieClip = new MovieClip();


Si asignamos una imagen, listeners, o cualquier cosa a ese clip, y después hacemos algo del estilo:

Código ActionScript :

clip = new MovieClip();


Qué ocurre con lo que antes formaba parte del "viejo" movieclip? Queda flotando por la memoria? Lo elimina el garbage collector? Acaba siendo machacado porque hay otro objeto en su lugar?

Y aparte... está bien hacer eso, o es mejor eliminar los listeners que pudiese tener, etc, etc?

Gracias y un saludo! :wink:

Por ChiGaTTa

17 de clabLevel



 

firefox
Citar            
MensajeEscrito el 17 Mar 2010 12:30 pm
cuando escribimos

Código ActionScript :

var clip:MovieClip = new MovieClip();

Estamos
1.-Creando un nuevo MovieClip
2.-Creando una VARIABLE
3.-Usando esa variable para referirnos al MC recién creado

Si hacemos, en otro punto

Código ActionScript :

clip = new MovieClip();

Estamos
1.-Creando un nuevoMovieClip
2.-La variable que antes se refería al primer MovieClip ("apuntaba" al anterior MovieClip) ahora se refiere a este nuevo.

Así que no eliminamos el MovieClip anterior ni nada de eso, lo siento, debemos eliminar todos lo listeners que tuviera, si estaba en el escenario eliminarlo con un removeChild y, esperar al garbage para que lo elimine definitivamente de la memoria.

Por Eliseo2

710 de clabLevel



 

firefox
Citar            
MensajeEscrito el 17 Mar 2010 12:43 pm
Ok, muchas gracias Eliseo2 (de nuevo xD). Suponía que lo otro estaba dejando basura, había que asegurarse.

Y en el caso de que no quisieramos que el "viejo" movieclip desaparezca, pero se quiera utilizar la variable clip para estar referenciando a otro movieclip, entonces sí estaría correcto hacer new movieclip, no? (siempre teniendo en cuenta que el "viejo" quedaría referenciado en algún otro lado).

Por ChiGaTTa

17 de clabLevel



 

firefox
Citar            
MensajeEscrito el 17 Mar 2010 02:02 pm
Sí, de hecho se hace muchas veces, aunque como dices, debemos saber "cómo recuperar el "viejo"".
Se puede recuperar, si le has dado valor a su propiedad "name" y lo has añadido al stage (o dentro de un MC) mediante getChildByName (o si sabemos su "profundidad" mediate getChildAt)

Código ActionScript :

var ref_mc:MovieClip=new MovieClip()
ref_mc.name="primero" //<---le damos valor a la propiadad "name"
               //¡OJO! la propiedad name NO tiene nada que ver con el nombre de instancia
addChild(ref_mc)
ref_mc=new MovieClip() //<--ya se está refiriendo a otro
....
var ref_mc1:MovieClip=getChildByName("primero") as MovieClip //(*)

(*)Le digo "as MovieClip" porque getChildByName devuelve siempre un DisplayObject. Si es algo más usamos la "conversión de cast"

Por Eliseo2

710 de clabLevel



 

firefox

 

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