Noções básicas sobre a manipulação de eventos

Flash Player 9 e posterior, Adobe AIR 1.0 e posterior

Pense nos eventos como ocorrências de qualquer tipo no arquivo SWF que interessam a você como programador. Por exemplo, a maioria dos arquivos SWF oferece suporte a algum tipo de interação do usuário - seja algo simples, como responder ao clique do mouse, ou algo mais complexo, como aceitar e processar dados inseridos em um formulário. Toda interação do usuário com seu arquivo SWF é considerada um evento. Os eventos também podem ocorrer sem nenhuma interação direta do usuário, como quando os dados terminam de ser carregados a partir de um servidor ou quando uma câmera acoplada é ativada.

No ActionScript 3.0, cada evento é representado por um objeto, que é uma ocorrência da classe Event ou uma de suas subclasses. O objeto de evento não apenas armazena informações sobre um evento específico, mas também contém métodos que facilitam o próprio tratamento. Por exemplo, quando detecta um clique do mouse, o Flash Player ou o AIR cria um objeto de evento (uma ocorrência da classe MouseEvent) para representar esse evento específico de clique do mouse.

Depois de criar um objeto de evento, o Flash Player ou o AIR o envia , ou seja, o objeto de evento é transmitido para o objeto que é destino do evento. O objeto que é o destino de um objeto de evento enviado é chamado de destino do evento . Por exemplo, quando uma câmera acoplada é ativada, o Flash Player envia um objeto de evento diretamente ao destino que, nesse caso, é o objeto que representa a câmera. No entanto, se o destino do evento estiver na lista de exibição, o objeto será transmitido pela hierarquia da lista de exibição até atingir o destino do evento. Em alguns casos, o objeto de evento forma "bolhas" na hierarquia da lista de exibição ao longo da mesma rota. Essa profundidade da hierarquia da lista de exibição é chamada de fluxo de evento .

Você pode “ouvir” objetos de evento no seu código usando ouvintes de evento. Ouvintes de evento são as funções ou os métodos gravados para responder a eventos específicos. Para garantir que seu programa responda a eventos, adicione ouvintes ao destino do evento ou a qualquer objeto da lista de exibição que faça parte do fluxo de um objeto de evento.

Sempre que é gravado, o código do ouvinte de evento segue essa estrutura básica (os elementos em negrito são alocadores de espaço preenchidos de acordo com suas necessidades):

function eventResponse(eventObject:EventType):void 
{ 
    // Actions performed in response to the event go here. 
} 
 
eventTarget.addEventListener(EventType.EVENT_NAME, eventResponse);

Esse código faz duas coisas. Primeiro, ele define uma função, que é a maneira de especificar as ações que serão executadas em resposta ao evento. Em seguida, o método addEventListener() do objeto de origem é chamado, basicamente “inscrevendo” a função do evento especificado para que, quando o evento acontecer, as ações da função sejam executadas. Quando o evento realmente acontece, o destino do evento verifica a lista de todos os métodos e funções registrados como ouvintes de evento. Em seguida, ele chama um por um, passando o objeto de evento como parâmetro.

Para criar seu próprio ouvinte de evento, é necessário alterar quatro coisas nesse código. Primeiro, você deve dar à função o nome que deseja usar (essa alteração deve ser feita em dois lugares, onde aparece eventResponse no código). Segundo, você deve especificar o nome de classe adequado do objeto que é enviado pelo evento que deseja ouvir ( EventType no código) e também deve especificar a constante correta para o evento em questão ( EVENT_NAME na listagem). Terceiro, você deve chamar o método addEventListener() no objeto que enviará o evento ( eventTarget neste código). Se desejar, altere o nome da variável usada como parâmetro da função ( eventObject neste código).

Conceitos e termos importantes

A lista a seguir de referência contém termos importantes que você vai encontrar ao escrever rotinas de tratamento de eventos:

Bolhas
As bolhas ocorrem para alguns eventos, de forma que um objeto de exibição pai possa responder aos eventos despachados por seus filhos.

Fase de bolhas
A parte do fluxo de evento no qual um evento se propaga até os objetos de exibição pai. A fase de bolha ocorre depois das fases de captura e destino.

Fase de captura
A parte do fluxo de evento em que um evento se propaga para baixo, do destino mais geral até o objeto de destino mais específico. A fase de captura ocorre antes das fases de destino e bolhas.

Comportamento padrão
Alguns eventos incluem um comportamento que normalmente ocorre ao longo do evento e é conhecido como comportamento padrão. Por exemplo, quando um usuário digita em um campo de texto, ocorre um evento de entrada de texto. O comportamento padrão desse evento é exibir o caractere que realmente foi digitado no campo de texto, mas você pode substituí-lo (se, por algum motivo, não desejar exibir o caractere digitado).

Envio
Para notificar o evento ocorrido para os ouvintes de evento.

Evento
Algo que acontece em um objeto e que pode ser informado para outros objetos.

Fluxo de evento
Quando os eventos acontecem em um objeto na lista de exibição (um objeto exibido na tela), todos os objetos que contêm o objeto em questão são informados sobre o evento e notificam seus ouvintes. Esse processo começa com o palco e continua na lista de exibição até o objeto real onde ocorreu o evento e, em seguida, retorna ao palco. Esse processo também é conhecido como fluxo de evento.

Objeto de evento
Um objeto que contém informações sobre a ocorrência de um evento específico, que é enviado para todos os ouvintes assim que o evento acontece.

Destino do evento
O objeto que realmente envia um evento. Por exemplo, se o usuário clica em um botão que está dentro de uma entidade gráfica contida no palco, todos esses objetos despacham eventos, mas o destino do evento é o local onde o evento realmente aconteceu – nesse caso, o botão clicado.

Ouvinte
Um objeto ou uma função que foi registrada com um objeto para indicar que deve ser notificado quando ocorrer um evento específico.

Fase de destino
O ponto do fluxo de evento no qual um evento atingiu o destino mais específico possível. A fase de destino ocorre entre as fases de captura e bolhas.