Comunidad de diseño web y desarrollo en internet online

Paso de valores con addEventListener en un bucle

Citar            
MensajeEscrito el 19 Ene 2009 08:25 pm
Muy buenas, he estado todo el día intentando encontrar solución a esto pero no me sale!!

Si ejecutan este script verán que lo que pretendo es que aparezcan en pantalla 5 instancias de un movieclip y que al pinchar en cada una de ellas me diga el número correspondiente. Pues bien, si lo comprueban verán que pinches donde pinches el valor siempre es el último del bucle, es decir, el 5... ¿alguien tiene idea de cómo solucionarlo? Gracias.

Código :

var valor:int = 1;
var circulo_mc;

function MiFuncion(valor){
   trace(valor);
}

for(var i:int = 0; i < 5; i++){
   circulo_mc = new circulo();
   addChild(circulo_mc);
   circulo_mc.x = i*100;
   circulo_mc.addEventListener(MouseEvent.CLICK, function(){MiFuncion(i)});
}

Por FGordon

6 de clabLevel



 

firefox
Citar            
MensajeEscrito el 19 Ene 2009 10:14 pm
Lo que pasa es que tu das click despues de terminado el bucle entonces "i" ya tomo el valor de 5 si dieras click durante el bucle(cosa casi imposible) verias un 3 o un 2, se me ocurre que le asignes esta "i" a cada mc como id:

Código ActionScript :

var valor:int = 1;
var circulo_mc;

function MiFuncion(e:MouseEvent){
   trace(e.target.id);
}

for(var i:int = 0; i < 5; i++){
   circulo_mc = new circulo();
   addChild(circulo_mc);
   circulo_mc.x = i*100;
////id////
circulo_mc.id=i;
//////////
   circulo_mc.addEventListener(MouseEvent.CLICK, MiFuncion);
}


Hice unos pequeños cambios elimine los parametros de tu funcion y deje la llamada normal del listener que manda como parametro el evento y de este evento capturas el target y trazas el id que anteriormente añadiste al clip, espero te sirva :) . Saludos!!

Por Angel Roberto

Claber

248 de clabLevel



 

firefox
Citar            
MensajeEscrito el 20 Ene 2009 10:30 am
Muchas gracias es justo lo que necesitaba, me has salvado la vida!!

Por FGordon

6 de clabLevel



 

firefox

 

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