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);
 }
¿Fue útil?

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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top