Actionscript 3.0 Determinazione Event Listener mittente?
-
21-09-2019 - |
Domanda
è possibile determinare quale oggetto chiama una funzione in base a un listener di eventi? per esempio, ho 2 pulsanti sul palco che richiamano la stessa funzione quando vengono cliccati. Mi piacerebbe la funzione per determinare quale pulsante è stato il mittente.
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);
}
Soluzione
dal evento classe
function myFunction(e:MouseEvent):void {
var myString:String = "The button that called this function was "+e.currentTarget;
trace(myString);
}
Altri suggerimenti
all'interno myfunction, e.currentTarget dovrebbe contenere un riferimento al pulsante che ha inviato l'evento.
Voglio solo aggiungere che: nel caso in oggetto si ottiene in funzione ci sono due proprietà che a volte può diventare confuso di distinguere tra di loro:
e.target - l'obiettivo sarà sempre tornare a voi il dispatcher originale dell'evento, quindi se si fa clic su un pulsante, ma in cui ascoltare il genitore vostro obiettivo sarebbe ancora il pulsante.
e.currentTarget - "L'oggetto che elabora attivamente l'oggetto Event con un listener di eventi". CurrentTarget restituisce l'oggetto che hai chiesto dalla manifestazione o in lingua adobes
in modo che il currentTarget e di destinazione possono produrre risultati diversi ed è necessario tenere a mente. post scriptum se gli eventi non lo fanno bolla (eventi non-visivi / non interazione con l'utente del mouse) e poi il currentTarget e la destinazione sarebbe la stessa o se si chiede l'oggetto che invia l'evento, nel caso di un evento di bubbling.