
Gestión de eventos: Diferencia entre target y currentTarget
Etiquetas: numChildren getChildAt target currentTarget
Para explicar la diferencia entre ambas propiedades, voy a poner un ejemplo práctico. Tenemos un clip llamado Menu_mc, que tiene dentro otros 3 clips que hacen de botones. Si añadimos el evento "click" a Menu_mc, en la función que se ejecute (poniendo como parámetro e:MouseEvent) obtendremos los siguientes resultados:
Si hacemos trace(e.target.name), se imprimirá al nombre del clip pulsado (que está dentro de Menu_mc)
Si hacemos trace(e.currentTarget.name), se imprimirá el nombre del menú, es decir, "Menu_mc".
Por tanto, cuando queremos programar un menú, no hace falta añadir los listeners uno a uno a los botones, podemos añadir el listener al menú, y aprovechar la propiedad target para ver que elemento ha sido pulsado.
//En este ejemplo tengo un clip llamado Menu_mc, que contiene tres clips que hacen de botones.
//Dentro de cada uno de estos clips he declarado una variable llamada Numero, a la que accedo
//desde la función del evento.
function VerNumero(e:MouseEvent) { //Enciendo todos los botones
for (var i:uint=0; i < Menu_mc.numChildren; i++) { Menu_mc.getChildAt(i).alpha = 1;
}
//Apago el botón elegido
e.target.alpha = 0.5;
Texto_txt.text = "Boton elegido: " + e.target.Numero;
}
Menu_mc.addEventListener(MouseEvent.CLICK,VerNumero);

Dejar un comentario