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

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top