ActionScript 3.0 Determinando o remetente do ouvinte do evento?
-
21-09-2019 - |
Pergunta
É possível determinar qual objeto chama uma função com base em um ouvinte de evento? Por exemplo, eu tenho 2 botões no palco que chamam a mesma função quando são clicados. Eu gostaria da função para determinar qual botão era o remetente.
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);
}
Solução
Use a propriedade CurrentTarget de Evento classe
function myFunction(e:MouseEvent):void {
var myString:String = "The button that called this function was "+e.currentTarget;
trace(myString);
}
Outras dicas
Dentro do MyFunction, E.CurrentTarget deve manter uma referência ao botão que enviou o evento.
Eu só quero acrescentar a isso: no objeto de evento que você obtém na função, há duas propriedades que às vezes podem ser confusas para diferenciar entre elas:
E.Target - O destino sempre retornará a você o despachante original do evento; portanto, se você clicar em um botão, mas onde ouvindo o pai, seu destino ainda seria o botão.
E.CurrentTarget - CurrentTarget Retorna o objeto que você pediu no evento ou na linguagem Adobes "O objeto que está processando ativamente o objeto de evento com um ouvinte de evento".
Portanto, seu CurrentTarget e Target podem produzir resultados diferentes e você precisa ter isso em mente. PS Se seus eventos não borbulharem (eventos de mouse de interação não visuais /não usuários), seu CurrentTarget e Target serão os mesmos ou se você pedir ao objeto que enviou o evento no caso de um evento borbulhante.