Comunidad de diseño web y desarrollo en internet online

Addchild

Citar            
MensajeEscrito el 12 Oct 2008 07:22 pm
:?Dados unos objetos gráficos en el escenario de los que se desconoce los nombres de las instancias, ¿Cómo puedo acceder a ellos?

Ejemplo:

for (var i:int = 0; i < 10; i++) {
var c:Sprite = new Sprite();
c.graphics.beginFill(0xFF00CC);
c.graphics.drawCircle(0,0,30);
c.x = Math.random() * stage.stageWidth;
c.y = Math.random() * stage.stageHeight;
addChild(c);
}

Luego de este código se desconoce el nombre de cada uno de los objetos creados, ¿cómo se puede acceder a ellos? : :cry:

Por AndreaY

0 de clabLevel



 

firefox
Citar            
MensajeEscrito el 12 Oct 2008 09:42 pm
Yo los metería en un Array o algo así...

Por Zah

BOFH

4290 de clabLevel

27 tutoriales
5 articulos

  Bastard Operators From Hell Editores

Zaragoza, España

firefox
Citar            
MensajeEscrito el 16 Oct 2008 01:06 am
Hola

Yo les pondria un nombre de instancia

Código :

for (var i:int = 0; i < 10; i++) {
var c:Sprite = new Sprite();
c.graphics.beginFill(0xFF00CC);
c.graphics.drawCircle(0,0,30);
c.x = Math.random() * stage.stageWidth;
c.y = Math.random() * stage.stageHeight;
c.name = "mc"+i;
addChild(c);
}


De esta manera podes usar getElementByName para obtener la referencia

Saludos!

Por alfathenus

833 de clabLevel

5 tutoriales

 

buenos aires || Argentina

firefox
Citar            
MensajeEscrito el 16 Oct 2008 02:44 am
además, si les vas a poner algun event listener, puedes acceder a sus propiedades y demás cosas mediante la propiedad currentTarget del evento disparado

Por master_of_puppetz

Claber

2483 de clabLevel

7 tutoriales
3 articulos

Genero:Masculino   Premio_Secretos

WebDev (Flex + PHP + JS)

safari
Citar            
MensajeEscrito el 16 Oct 2008 06:59 am
Alfathenus, creo que es mejor, tal y como dice Zah, meterlos en un array

Código :

//declaramos el array "elementos"
//en tu clase
private var elementos:Array;

for (var i:int = 0; i < 10; i++) {
   var c:Sprite = new Sprite();
   c.graphics.beginFill(0xFF00CC);
   c.graphics.drawCircle(0,0,30);
   c.x = Math.random() * stage.stageWidth;
   c.y = Math.random() * stage.stageHeight;
   addChild(c);
   //añadimos el Sprite al array
   elementos.push(c) 
}

De ese modo accedes a ellos rápidamente mediante el array. El motivo de NO usar getChildByName es que es una instrucción muuuuuyyyyy lenta. De hecho siempre he pensado que el gran cambio de AS.2 a AS.3 es que el nombre de instancia ha quedado como algo "romántico", aunque la esencia de AS.3 es que todos sean variables que hacen referencia a Objetos. Sí es cierto que nos han dejado el getchildByName, pero no conviene abusar de él

Por Eliseo2

710 de clabLevel



 

firefox
Citar            
MensajeEscrito el 17 Oct 2008 03:45 pm
mmm si puede ser eliseo... pero todo depende de lo q quieras hacer. Si necesita acceder a uno en particular ¿como sabes en donde esta dentro del array? Talves utilizando un Dictionary y poniendo como clave un nombre para q lo puedas luego identificar.

Sino por id tb deberias poder accederlos

Código :

hijo.id = "hola";
padre.addChild(hijo);
trace(padre.hola);


pero bue... abria q ver que es lo q necesita hacer y ver que combiene mas... aumentar la complejidad o mermar un toke el rendimiento (q si no debe ser mucho si no es de un uso extensivo el getChildByName...q por sierto tb depende de cuantos hijos tengas en donde estes buscando el elemento...

Saludos!

Por alfathenus

833 de clabLevel

5 tutoriales

 

buenos aires || Argentina

firefox
Citar            
MensajeEscrito el 17 Oct 2008 04:11 pm
Reconozco que esta respuesta es sólo por aján de tocar los coj..
Bah, que es sólo una broma, pero ya te digo que

Código :

elementos[10] //será el mc11

Vale, reconozco que mi querencia a los arrays y mis olvidos a los getChilyName es una enfermedad que me contagió Keith Peters

Por Eliseo2

710 de clabLevel



 

firefox
Citar            
MensajeEscrito el 17 Oct 2008 05:35 pm
jajaaj :P para eso esta el foro, para discutir diferentes puntos de vista :)

Saludos!

Por alfathenus

833 de clabLevel

5 tutoriales

 

buenos aires || Argentina

firefox

 

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