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");
}
|
|
|