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.