ActionScript 3.0 Determinación de Procesador de eventos del remitente?
-
21-09-2019 - |
Pregunta
¿es posible determinar qué objeto llama a una función basada en un detector de eventos? Por ejemplo, yo tengo 2 botones en el escenario que llaman a la misma función cuando se hace clic. me gustaría la función para determinar qué botón fue el remitente.
firstButton.addEventListener(MouseEvent.CLICK, myFunction);
secondButton.addEventListener(MouseEvent.CLICK, myFunction);
function myFunction(e:MouseEvent):void
{
var myString:String = "The button that called this function was (??)";
trace(myString);
}
Solución
Utilice la propiedad currentTarget de la Evento
function myFunction(e:MouseEvent):void {
var myString:String = "The button that called this function was "+e.currentTarget;
trace(myString);
}
Otros consejos
mifuncion dentro, e.currentTarget debe contener una referencia al botón que envió el evento.
Sólo quiero añadir que: en el objeto de evento que se obtiene en la función hay dos propiedades que a veces puede resultar confuso para diferenciar entre ellos:
e.target - el objetivo volverá siempre a que el despachador original del evento por lo que si ha hecho clic en un botón, pero donde escuchar a los padres que su objetivo todavía sería el botón.
e.currentTarget - "El objeto que procesa de forma activa el objeto de evento con un detector de eventos". CurrentTarget devuelve el objeto que pidió desde el evento o en lenguaje adobes
currentTarget por lo que su objetivo y puede producir resultados diferentes y hay que tener eso en mente. PD. si sus hechos no hacen burbujas (eventos de ratón de interacción del usuario no visuales / no), entonces su currentTarget y el objetivo serían los mismos o si solicita el objeto que distribuye el evento en el caso de un evento de propagación.