Manipulação de eventos

Cada componente transmite eventos quando um usuário interage com ele. Quando um usuário clica em um botão, por exemplo, ele despacha um evento MouseEvent.CLICK e, quando um usuário seleciona um item em uma lista, a lista despacha um evento Event. CHANGE . Um evento também pode ocorrer quando algo significativo acontece em um componente; por exemplo, quando um conteúdo conclui o carregamento de uma ocorrência de UILoader, gerando um evento Event.COMPLETE . Para manipular um evento, você grava o código do ActionScript que é executado quando o evento ocorre.

Os eventos de um componente incluem os eventos de qualquer classe da qual o componente os herda. Isso significa que todos os componentes de interface de usuário do ActionScript 3.0 herda eventos da classe UIComponent porque ela é a classe base desses componentes de UI. Para ver a lista dos eventos transmitidos por um componente, consulte a seção Eventos da entrada de classe do componente na Referência do ActionScript 3.0 para Flash Professional .

Para obter uma explicação completa sobre a manipulação de eventos no ActionScript 3.0, consulte Programação do ActionScript 3.0 .

Sobre os ouvintes de eventos

As pontos-chave a seguir se aplicam à manipulação de eventos dos componentes do ActionScript 3.0:

  • Todos os eventos são transmitidos por uma ocorrência de uma classe de componente. A ocorrência de componente é o transmissor .

  • Você registra um ouvinte de eventos chamando o método addEventListener() da ocorrência de componente. Por exemplo, a linha de código a seguir adiciona um ouvinte para o evento MouseEvent.CLICK à ocorrência de Button aButton :

    aButton.addEventListener(MouseEvent.CLICK, clickHandler);

    O segundo parâmetro do método addEventListener() registra o nome da função, clickHandler , a ser chamado quando o evento ocorrer. Essa função também é conhecida como função de retorno de chamada .

  • Você pode registrar vários ouvintes para uma única ocorrência de componente.

    aButton.addEventListener(MouseEvent.CLICK, clickHandler1); 
    aButton.addEventListener(MouseEvent.CLICK, clickHandler2);
  • Você pode registrar um ouvinte para várias ocorrências de componente.

    aButton.addEventListener(MouseEvent.CLICK, clickHandler1); 
    bButton.addEventListener(MouseEvent.CLICK, clickHandler1);
  • A função de manipulador de eventos é passada para um objeto de evento que contém informações sobre o tipo de evento e a ocorrência que transmite o evento. Para obter mais informações, consulte Sobre o objeto de evento .

  • O ouvinte permanecerá ativo até que o aplicativo seja encerrado ou você o remova explicitamente usando o método removeEventListener() . Por exemplo, a linha de código a seguir remove o ouvinte do evento MouseEvent.CLICK em aButton :

    aButton.removeEventListener(MouseEvent.CLICK, clickHandler);

Sobre o objeto de evento

O objeto de evento herda os eventos da classe de objeto Event e tem propriedades que contêm informações sobre o evento ocorrido, incluindo as propriedades target e type , que fornecem informações essenciais sobre o evento:

Propriedade

Descrição

type

Uma string que indica o tipo do evento.

target

Uma referência à ocorrência de componente que está transmitindo o evento.

Quando um evento tem propriedades adicionais, elas são listadas na descrição de classe do evento, na Referência do ActionScript 3.0 para Flash Professional .

O objeto de evento é gerado e passado automaticamente para a função de manipulador de eventos quando um evento ocorre.

Você pode usar o objeto de evento dentro da função para acessar o nome do evento transmitido ou o nome da ocorrência do componente que transmitiu o evento. No nome de ocorrência, você pode acessar outras propriedades de componente. Por exemplo, o código a seguir usa a propriedade target do objeto de evento evtObj para acessar a propriedade label de aButton e exibi-la no painel Saída:

import fl.controls.Button; 
import flash.events.MouseEvent; 
 
var aButton:Button = new Button(); 
aButton.label = "Submit"; 
addChild(aButton); 
aButton.addEventListener(MouseEvent.CLICK, clickHandler); 
 
function clickHandler(evtObj:MouseEvent){ 
trace("The " + evtObj.target.label + " button was clicked"); 
}