Foros del Web » Creando para Internet » Flash y Actionscript »

Paso de valores con addEventListener en un bucle

Estas en el tema de Paso de valores con addEventListener en un bucle en el foro de Flash y Actionscript en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 19/01/2009, 10:39
Avatar de Jandroide  
Fecha de Ingreso: marzo-2004
Mensajes: 96
Antigüedad: 13 años, 9 meses
Puntos: 1
Paso de valores con addEventListener en un bucle

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)});
}
  #2 (permalink)  
Antiguo 20/01/2009, 04:34
Avatar de Jandroide  
Fecha de Ingreso: marzo-2004
Mensajes: 96
Antigüedad: 13 años, 9 meses
Puntos: 1
Respuesta: Paso de valores con addEventListener en un bucle

Hola, al final me han dado la solución en otro lugar; la pongo aquí por si le puede ser útil a alguien.

El truco está en que siendo circulo_mc la instancia de un símbolo de tipo botón, podemos añadirle un id y luego capturar el target en la función.

Código:
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); 
}
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 05:19.