Comunidad de diseño web y desarrollo en internet online

Problemas con addEventListener dinámico.

Citar            
MensajeEscrito el 09 Jul 2009 04:06 am
Otra vez necesito su ayuda he visto muchos tutos y aun no entiendo por que no funciona he aprendido mucho de AS3 pero la verdad es que soy bastante novato ...

Código ActionScript :

for (var i:Number =0; i < xmlPlay.music.length(); i++) {
   var list = this["Playlist_Lista" + i];
   list = new Playlist_Lista();
   list.x = 22;
   list.y = i * 21 + 74;
   list.Nombre_txt.text = xmlPlay.music.nombre[i];
   list.addEventListener(MouseEvent.CLICK , OverList);

   function OverList() {
      var AlphaButton:Tween = new Tween(list,"alpha",None.easeOut, .2, 1,1, true);
   }
                  
   //Agregar
   miPlayList.addChild(list);
}


Con este código hago un llamado a un xml el cual llama un Clase de Biblioteca, lo que no puedo hacer es agregar un addEventListener dinámico, como puedo puedo hacerlo por que de la forma que lo tengo solamente afecta la ultimo objeto en pantalla ... ayuda plis!!

Por geokym

4 de clabLevel



 

firefox
Citar            
MensajeEscrito el 09 Jul 2009 06:26 am
Voy a "reordenar" tu código

Código ActionScript :

//primero hacemos el bucle
for (var i:Number =0; i < xmlPlay.music.length(); i++) { 
   var list = this["Playlist_Lista" + i]; 
   list = new Playlist_Lista(); 
   list.x = 22; 
   list.y = i * 21 + 74; 
   list.Nombre_txt.text = xmlPlay.music.nombre[i]; 
   list.addEventListener(MouseEvent.CLICK , OverList); 
   miPlayList.addChild(list); 
}
//FUERA del bucle definimos la función
function OverList() { 
      var AlphaButton:Tween = new Tween(list,"alpha",None.easeOut, .2, 1,1, true); 
} 

La he puesto fuera porque ponerla dentro sólo haría que redefinirse la función.
Vemos que, dentro de la función OverList NO existe la variable "list", así que este código no va a funcionar.
Vamos a ponerlo en funcionamiento:
Sí, hay algo que está mal en el código y es que, cualquier función relacionada con un addEventListener TIENE un argumento que es de la clase de Evento que se haya metido. Vamos, sería

Código ActionScript :

//FUERA del bucle definimos la función
function OverList(e:EventMouse) {  //<--el argumento es "e" y es de la Clase EventMouse
      var AlphaButton:Tween = new Tween(list,"alpha",None.easeOut, .2, 1,1, true); 
} 

Vemos que es de la Clase EventMouse. si lo que hubiéramos añadido es un listener de tipo Event.ENTER_FRAME, el argumento sería de la clase "Event"
No te preocupes, que ya queda menos.
Los objetos de las Clases "Event" tienen dos propiedades "target" y "currentTarget" que nos indican a quién se le ha aplicado el evento. Así que escribiríamos

Código ActionScript :

//FUERA del bucle definimos la función
function OverList(e:EventMouse) {  //<--el argumento es "e" y es de la Clase EventMouse
      var list:MovieClip=e.target as MovieClip //<--asignamos a una variable el "target" y le decimos que es de tipo MovieClip
              //¡¡OJO!! no confundir con la variable "list" del bucle, es otra variable -aunque se llame igual-
      //ahora sí que podemos hacer el Tween o, p.e. escribir
     trace(lsit.name)  //<--nos indicaría el nombre
      var AlphaButton:Tween = new Tween(list,"alpha",None.easeOut, .2, 1,1, true); 
} 

puff

Por Eliseo2

710 de clabLevel



 

firefox
Citar            
MensajeEscrito el 10 Jul 2009 04:18 am
Graciaaassss!!! te pasaste me qedo todo muy claro ... podrias ser profesor jajaj xD ....
muchas gracias ...

Por geokym

4 de clabLevel



 

firefox

 

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