Versão da linguagem: | ActionScript 3.0 |
Versões de runtime: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Destinos de eventos são uma parte importante do modelo de eventos do Flash® Player e do Adobe AIR. O destino de evento funciona como o ponto focal de como eventos fluem pela hierarquia da lista de exibição. Quando ocorre um evento como um clique do mouse ou um pressionamento de tecla, um objeto de evento é despachado para o fluxo de eventos a partir da raiz da lista de exibição. O objeto do evento faz uma viagem completa até o destino do evento, que conceitualmente está dividido em três fases: a fase de captura inclui a viagem da raiz até o último nó antes do nó do destino do evento; a fase de destino inclui apenas o nó de destino do evento; e a fase de bolha inclui qualquer nó subsequente encontrado na viagem de volta até a raiz da lista de exibição.
Em geral, o modo mais fácil para que uma classe definida pelo usuário obtenha capacidades de envio de evento é ampliar o EventDispatcher. Se isso for impossível (ou seja, se a classe já estiver ampliando outra classe), você poderá, em vez disso, implementar a interface IEventDispatcher, criar um membro EventDispatcher e gravar junções simples para direcionar chamadas no EventDispatcher agregado.
Método | Definido por | ||
---|---|---|---|
addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void
Registra um objeto de ouvinte de evento em um objeto EventDispatcher, de forma que o ouvinte receba a notificação de um evento. | IEventDispatcher | ||
Envia um evento para o fluxo de eventos. | IEventDispatcher | ||
Verifica se o objeto EventDispatcher tem ouvintes registrados para um tipo específico de evento. | IEventDispatcher | ||
Remove um ouvinte do objeto EventDispatcher. | IEventDispatcher | ||
Verifica se um ouvinte de evento está registrado nesse objeto EventDispatcher ou em qualquer um de seus ancestrais para o tipo de evento especificado. | IEventDispatcher |
addEventListener | () | método |
public function addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void
Versão da linguagem: | ActionScript 3.0 |
Versões de runtime: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Registra um objeto de ouvinte de evento em um objeto EventDispatcher, de forma que o ouvinte receba a notificação de um evento. Você pode registrar ouvintes de eventos em todos os nós da lista de exibição de um tipo específico de evento, fase e prioridade.
Depois de registrar um ouvinte de evento com êxito, não será possível alterar a respectiva prioridade por meio de chamadas adicionais para o addEventListener()
. Para alterar a prioridade de um ouvinte, chame primeiramente o removeEventListener()
. Em seguida, você poderá registrar o ouvinte novamente com o novo nível de prioridade.
Depois que o ouvinte for registrado, chamadas subsequentes para o addEventListener()
com um valor diferente para type
ou useCapture
resultarão na criação de um registro de ouvinte separado. Por exemplo, se você primeiro registrar um ouvinte com o useCapture
definido como true
, ele escutará apenas durante a fase de captura. Se você chamar o addEventListener()
novamente, usando o mesmo objeto de ouvinte, mas com o useCapture
definido como false
, você terá dois ouvintes distintos: um que escuta durante a fase de captura e outro que escuta durante as fases de destino e de bubbling.
Você não pode registrar um ouvinte de evento apenas para a fase de destino ou a fase de bubbling. Essas fases são emparelhadas durante o registro porque o bubbling se aplica apenas aos ancestral do nó-alvo.
Quando você não precisar ais de um ouvinte de evento, remova-o, chamando o EventDispatcher.removeEventListener()
; do contrário, poderão ocorrer problemas de memória. Objetos com ouvintes de eventos registrados não são removidos automaticamente da memória porque o coletor de lixo não remove objetos que ainda têm referências.
Copiar uma ocorrência do EventDispatcher não copia os ouvintes de eventos a ele anexados. (Se o seu recém-criado nó precisar de um ouvinte de evento, anexe o ouvinte após criar o nó). Entretanto, se você mover uma ocorrência do EventDispatcher, os ouvintes de evento anexados se movimentarão com ele.
Se o ouvinte de evento estiver sendo registrado em um nó enquanto um evento também estiver sendo processado nesse nó, o ouvinte de evento não será disparado durante a fase atual, mas poderá ser disparado durante uma fase posterior no fluxo de eventos, como a fase de bubbling.
Se um ouvinte de evento for removido de um nó enquanto um evento estiver sendo processado no nó, ele ainda será disparado pelas ações atuais. Depois de removido, o ouvinte de evento nunca mais é chamado novamente (a menos que ele seja registrado mais uma vez para processamento futuro).
Parâmetros
type:String — O tipo de evento.
| |
listener:Function — A função de ouvinte que processa o evento. Esta função deve aceitar um objeto event como seu único parâmetro e não deve retornar nada, como mostra este exemplo:
| |
useCapture:Boolean (default = false ) — Determina se o ouvinte trabalha na fase de captura ou nas fases de destino e bubbling. Se useCapture for definido como true , o ouvinte processará o evento apenas durante a fase de captura e não na fase de destino nem de bubbling. Se useCapture for false , o ouvinte processará o evento apenas durante a fase de destino ou de bubbling. Para ouvir o evento em todas as três fases, chame o addEventListener() duas vezes, uma vez com o useCapture definido como true , e novamente, com o useCapture definido como false .
| |
priority:int (default = 0 ) — O nível de prioridade do ouvinte de evento. Prioridades são designadas por um número inteiro de 32 bits. Quanto mais alto o número, maior a prioridade. Todos os ouvintes com prioridade n são processados antes dos ouvintes com prioridade n-1. Se dois ou mais ouvintes compartilham a mesma prioridade, eles são processados pela ordem segundo a qual foram adicionados. A prioridade padrão é 0.
| |
useWeakReference:Boolean (default = false ) — Determina se a referência ao ouvinte é forte ou fraca. Uma referência forte (a padrão) impede que o ouvinte seja coletado como lixo. Uma referência fraca não impede. Funções de membro de nível de classe não estão sujeitas à coleta de lixo, portanto, você pode definir |
dispatchEvent | () | método |
public function dispatchEvent(event:Event):Boolean
Versão da linguagem: | ActionScript 3.0 |
Versões de runtime: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Envia um evento para o fluxo de eventos. O destino de evento é o objeto EventDispatcher no qual o método dispatchEvent()
é chamado.
Parâmetros
event:Event — O objeto event despachado para o fluxo de eventos.
|
Boolean — Um valor de true a menos que o preventDefault() seja chamado no evento, caso em que ele retornará false .
|
hasEventListener | () | método |
public function hasEventListener(type:String):Boolean
Versão da linguagem: | ActionScript 3.0 |
Versões de runtime: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Verifica se o objeto EventDispatcher tem ouvintes registrados para um tipo específico de evento. Isto permite determinar quando um objeto EventDispatcher alterou o tratamento de um tipo de evento na hierarquia de fluxo de eventos. Para determinar se um tipo de evento específico efetivamente dispara um ouvinte de evento, utilize o IEventDispatcher.willTrigger()
.
A diferença entre o hasEventListener()
e o willTrigger()
é que o hasEventListener()
examina só o objeto a que ele pertence, ao passo que o willTrigger()
examina o fluxo de eventos inteiro para o evento especificado pelo parâmetro type
.
Parâmetros
type:String — O tipo de evento.
|
Boolean — Um valor true se um ouvinte do tipo especificado for registrado; do contrário, será false .
|
Elementos da API relacionados
removeEventListener | () | método |
public function removeEventListener(type:String, listener:Function, useCapture:Boolean = false):void
Versão da linguagem: | ActionScript 3.0 |
Versões de runtime: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Remove um ouvinte do objeto EventDispatcher. Se não existir um ouvinte correspondente registrado com o objeto EventDispatcher, uma chamada para esse método não terá efeito.
Parâmetros
type:String — O tipo de evento.
| |
listener:Function — O objeto de ouvinte a remover.
| |
useCapture:Boolean (default = false ) — Especifica se o ouvinte foi registrado na fase de captura ou nas fases de destino e bubbling. Se o ouvinte foi registrado para a fase de captura e as fases de destino e bubbling, duas chamadas para o removeEventListener() serão necessárias para removê-las: uma chamada com o useCapture definido como true , e outra, com o useCapture definido como false .
|
willTrigger | () | método |
public function willTrigger(type:String):Boolean
Versão da linguagem: | ActionScript 3.0 |
Versões de runtime: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Verifica se um ouvinte de evento está registrado nesse objeto EventDispatcher ou em qualquer um de seus ancestrais para o tipo de evento especificado. Este método retorna true
se um ouvinte de evento for disparado durante qualquer fase do fluxo de eventos quando um evento do tipo especificado for despachado para esse objeto EventDispatcher ou para algum de seus descendentes.
A diferença entre o hasEventListener()
e o willTrigger()
é que o hasEventListener()
examina só o objeto a que ele pertence, ao passo que o willTrigger()
examina o fluxo de eventos inteiro para o evento especificado pelo parâmetro type
.
Parâmetros
type:String — O tipo de evento.
|
Boolean — Um valor true se um ouvinte do tipo especificado será disparado; do contrário, será false .
|
decorDispatcher
) da classe DecoratedDispatcher é construída, e a variável decorDispatcher
é utilizada para chamar o addEventListener()
com o evento personalizado doSomething
, que é então controlado pelo didSomething()
, que imprime uma linha de texto usando o trace()
.
package { import flash.events.Event; import flash.display.Sprite; public class IEventDispatcherExample extends Sprite { public function IEventDispatcherExample() { var decorDispatcher:DecoratedDispatcher = new DecoratedDispatcher(); decorDispatcher.addEventListener("doSomething", didSomething); decorDispatcher.dispatchEvent(new Event("doSomething")); } public function didSomething(evt:Event):void { trace(">> didSomething"); } } } import flash.events.IEventDispatcher; import flash.events.EventDispatcher; import flash.events.Event; class DecoratedDispatcher implements IEventDispatcher { private var dispatcher:EventDispatcher; public function DecoratedDispatcher() { dispatcher = new EventDispatcher(this); } public function addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void{ dispatcher.addEventListener(type, listener, useCapture, priority); } public function dispatchEvent(evt:Event):Boolean{ return dispatcher.dispatchEvent(evt); } public function hasEventListener(type:String):Boolean{ return dispatcher.hasEventListener(type); } public function removeEventListener(type:String, listener:Function, useCapture:Boolean = false):void{ dispatcher.removeEventListener(type, listener, useCapture); } public function willTrigger(type:String):Boolean { return dispatcher.willTrigger(type); } }
Wed Jun 13 2018, 11:10 AM Z