Gestión de eventos: Diferencia entre target y 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.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
//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); |