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);
 }
È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top