Comunidad de diseño web y desarrollo en internet online

sin addChild ni getChildAt

Citar            
MensajeEscrito el 16 Sep 2009 10:39 pm
hola a todos!!!
quería hacer una pregunta, hay alguna forma de refenciar un mc sin usar addChild y getChildAt, por ej.

var mc1:MovieClip = new MovieClip();
var mc2:MovieClip = new MovieClip();
var mc3:MovieClip = new MovieClip();

for (i = 1; i <= 3; i++) {
(mc + i).x = 10 * i; // se q esto no anda pero es para mostrarlo, hay algo semejante q funcione????
}

Mil gracias!!!
Saludos, y como siempre sigan así!!!

Por Pablokorku

60 de clabLevel



 

firefox
Citar            
MensajeEscrito el 17 Sep 2009 07:54 am
¿

Código ActionScript :

this["mc"+i]

?
Si no funciona te propongo que lo metas en un array.

Código ActionScript :


//si estás creando los MCs en tiempo de ejecución
var misMcs=new Array()
misMcs.push(new MovieClip())
misMcs.push(new MovieClip())
misMcs.push(new MovieClip())
//si ya los tuvieras en el escenario, sería simplemente
//var misMcs=new Array(mc1,mc2,mc3)

for (var i:int=0;i<misMCs.length;i++){
   misMCs[i].x=10*i
   addChild(misMCs[i])
}

Por Eliseo2

710 de clabLevel



 

firefox
Citar            
MensajeEscrito el 17 Sep 2009 01:15 pm
Hola Eliseo2!
gracias por tu pronta respuesta!
efectivamente this["mc" + i ] anda muy bien!
Pero me gustó mucho la sugerencia del array, así deja más claro el código.
Te agradezco mucho nuevamente!
... y hasta la próxima pregunta! ^^

Por Pablokorku

60 de clabLevel



 

firefox
Citar            
MensajeEscrito el 17 Sep 2009 05:06 pm
Habias probado con getChildByName ?

Código ActionScript :

         for(var i:int=0;i<2;i++)
            trace(container.getChildByName("clip_name"+i)); // null



esto también te puede funcionar.

Por papachan

Claber

198 de clabLevel

1 tutorial
1 articulo

 

chrome
Citar            
MensajeEscrito el 17 Sep 2009 06:12 pm
si, pero para eso los mcs tienen q estar dentro de otro mc (container) y darle propiedad "name" no es cierto???
pq si estan sueltos como los reconoce, pq la clase DisplayObject no tiene getChildByName y me tira error de colision...
hice esto para probar y no funciona...

var container:DisplayObject;
for(var n:int=0;n<2;n++)
trace(container.getChildByName("mc"+n));

Por Pablokorku

60 de clabLevel



 

firefox
Citar            
MensajeEscrito el 17 Sep 2009 07:30 pm
La Clase DisplayObject sí que tiene getChildByName, lo que ocurre es que, tal y como dices, getChildByName requiere como argumento un string: la propiedad "name" del displayObject.. Si se podría escribir

Código ActionScript :

//si tenemos un Mc con la propiedad "name" igual a "nombre"
//¡OJO!, la propiedad "name" NO tiene nada que ver con el "nombre de instancia"(*)
trace(getChildByName("nombre"))

(*) Si quieres, aunque liado, lo he tratado de explicar en este post

Por Eliseo2

710 de clabLevel



 

msie8
Citar            
MensajeEscrito el 17 Sep 2009 10:15 pm
ya leí el post de hecho lo había visto antes pero no entendí ni medio jeje! ahora entendí un poco menos :lol: no mentira, lo q si te soy sincero hay un detalle q no me queda claro, es el nombre de instancia, osea

si tengo
var mc:MovieClip = new MovieClip();
mc es el nombre de la variable, bien
mc.name = "nombre" // nombre es un string de la propiedad name para usar por ej. en getChildByName ("nombre")
mc = instancia; // así declaro un nombre de instancia ??? eso no me queda del todo claro cuando leo esto en el post..

//si tenemos un MC con nombre de instancia "mimc"
var variable_ref=mimc
//variable_ref es una "variable", el nombre de instancia es "mimc", por eso
this["mimc"]._x=300
//es lo mismo que
mimc._x=300

gracias por tu paciencia!

Por Pablokorku

60 de clabLevel



 

firefox
Citar            
MensajeEscrito el 18 Sep 2009 06:53 am
Me siento como un profesor mío que era incapaz de explicar bien :)
Dos ideas
1.-Cuando escribimos
var mc:MovieClip = new MovieClip();
tal y como dices "mc" es el nombre de una variable
Cuando tenemos un MovieClip en el escenario y le damos como nombre de instancia "mc" es EXACTAMENTE equivalente a lla instrucción anterior.

2.-Si queremos usar el método getChildByName, debemos darle valor a la propiedad "name" de un MC y, el único modo de darle valor a esa propiedad es escribiendo

Código ActionScript :

mc.name="Nombre_del_MC"


3.-La tercera tiene que ver con tu duda y con la "notación de corchetes". En Flash, cualquier variable, función, etc nos podemos referir a ella por su nombre

Código ActionScript :

var variable=23
trace(variable)

ó, usando la notación de corchetes

Código ActionScript :

trace(this["variable"])

Usar la "notación de corchetes" sirve para cuando no sabemos el nombre de la variable

Código ActionScript :

variable1="hola"
variable2="mundo"
i=1
trace(this["variable"+i])

¿mejor?

Por Eliseo2

710 de clabLevel



 

firefox
Citar            
MensajeEscrito el 24 Sep 2009 10:34 pm
ante todo perdón por tardar en contestar ya q no se pq el foro no me avisó q tenía respuesta, raro, buen en fin , está muy bien explicado el tema de los corchetes y ahora lo entendí perfecto, pq yo lo hice así como vos explicas y anduvo bien pero no sabía el porque...

Un saludo y gracias!
Pablo.

Por Pablokorku

60 de clabLevel



 

firefox

 

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