Comunidad de diseño web y desarrollo en internet online

Llamada Indirecta de Movieclip

Citar            
MensajeEscrito el 30 Ago 2009 01:28 am
Hola a todos,

Mi problema es el siguiente:

En AS2 para refererirme a cualquier catidad de movieclip, los llamo indirectamente de la siguiente forma.

Código ActionScript :

function Ejemplo(){
   for(i=1;i<6;i++){
      _root["mc"+i].onRelease = function(){
         animar(cuadro_mc);
      };
   }
}


Comom pueden ver, en este caso, tendria 7 movieclips de nombre mc1, mc2, mc3, etc. y de esa forma me refiero a todos mediante el ciclo FOR.

Mi pregunta es... ¿Como puedo hacer eso en AS3?

De antemano muchas gracias! ^^

Por joel_fox

28 de clabLevel



Genero:Masculino  

Yo soy yo.

firefox
Citar            
MensajeEscrito el 30 Ago 2009 09:05 am
puedes seguir usando la "notación de corchetes" con this, parent o root para referinos a una variable que haga referencia a un Mc. Vale, lo he enrevesado así que a ver si lo deslío. En AS.3 lo que estamos constantement haciendo es tener variable que hacen referencia a un MC. De hecho, cuando le damos "nombre de instancia" a un MC lo que hacemos es crear una variable que hace referencia a dicho MC.
En AS.2 podíamos escribir, p.e.

Código :

mivariable=mc1
//y ahora podemos usar "mivariable"
mivariable._x=300

Pero ¡OJO! no confundamos esa "variable" (el nombre de instancia) con la propiedad "name" de nuestro MC. Así que puedes escribir algo como

Código ActionScript :

for(i=1;i<6;i++){
      root["mc"+i].x=300
}

Por otra parte, ya NO se controlan los eventos tal y como escribes, sino con addEventListener. Así que pondríamos

Código ActionScript :

for (int:i=1;i<6;i++){
      root["mc"+i].addEventListener(MouseEvents.CLICK, onReleaseMc)
}
function onReleaseMc(e:MouseEvent){
     var mc:MovieClip=e.target as MovieClip
     trace(mc.name)
     animar(cuadro_mc)
}

Observa que, al igual que en AS.2 es la misma función la que se ejecuta para todos los "mc"s. A la función la he llamado onReleaseMc, pero la podía haber llamado "porompompero". Observa, además que esa función siempre tiene un argumento. en este caso como el listener que añadimos es de tipo MouseEvent, el argumento es también de ese tipo. en "e.target" tenemos quién ha sido pulsado. Hago una "conversión de cast" para indicarle que es de tipo MovieClip y usa una variable auxiliar, pera poder escribir, p.e. trace (mc.name)

Por Eliseo2

710 de clabLevel



 

msie8
Citar            
MensajeEscrito el 01 Sep 2009 04:45 am
OK! :wink:

Muchas gracias Eliseo2. Bastante clara tu explicación!

Por joel_fox

28 de clabLevel



Genero:Masculino  

Yo soy yo.

firefox

 

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