Autor: Rodrigo Gonçalves
Vamos falar um pouco sobre conceito básico de eventos no AS3. Se você já sabe o que é variáveis (propriedades) e funções (métodos) de um objeto, eventos é algo muito importante pra conseguirmos ter alguma atidude no código.
Se você está começando programar, as vezes pode ser um pouco difícil para muitos essa parte no começo (inclusive comigo).
Mas acredite, uma vez aprendido e entendido pelo menos o básico de como funciona os eventos no Flash e como aplicar eles em um código, as idéias começam a fazer mais sentido conforme praticamos mais e mais.
Espero que esse artigo te ajude de alguma forma caso esteja começando com AS3.
Índice:
1. Entendo o conceito de eventos na vida real;
2. Eventos no AS3;
3. Sintaxe addEventListener;
4. Adicionando um Evento em um objeto;
5. Removendo um Evento de um objeto.
1. Entendo o conceito de eventos na vida real
Afinal o que é Evento? Um Evento é tudo que acontece (eventualmente) ao nosso redor. Um exemplo geral da vida cotidiana das pessoas. Por exemplo, quando acordamos, quando tomamos café da manhã, quando o começar a chuver, quando a noite chegar, quando tiver uma festa, quando eu parar de falar, etc,… Quando…Quando….Quando…
Obviamente você deve ter reparado a palavra "Quando" nas frases. E essa palavra pode ser usadas para nós mesmo sabermos (e tentar entender) quando usar um tipo de evento para termos alguma determinada atitude no código e fazer alguma ação (olha aí um evento novamente).
Os eventos acontecem, queira ou não queira eles acontecem uma hora ou outra. A diferença básica é, se queremos ouvir (dar atenção) e fazer algo quando (e somente quando!) acontecer alguma coisa sobre um determinado assunto, ou se preferir pode deixar acontecer as coisas ao redor e simplismente fazer nada. Por exemplo, quando chover, quero pegar um guarda-chuva! Ou quando a noite chegar, quero ir em uma festa! Ou se eu quiser tomar banho de chuva e não ir na festa a noite. Tudo bem! São só eventos que acontecem e eu não quis dar atenção. Bom, acho que você já pegou a idéia.
Ok! Muito bonito. Muito legal. Muito bacana esse tal de "evento". Mas e o Flash? Como fica? O que isso tem haver?
"Quando" você ler o resto, você vai entender…
2. Eventos no AS3
No caso do amigo Flash, os eventos também acontecem. Basicamente, existem 2 tipos de eventos:
Um gerado pela interação do usuário com o conteúdo, quando por exemplo clica no botão, ou quando pressiona uma tecla.
E outro tipo de evento que acontece pode ser pelo criado próprio sistema (Player Flash). por exemplo quando começa ou termina um download ou upload de um arquivo, ou quando carrega uma imagem, video ou som, e por aí vai.
Quando um evento acontece, surge um cara chamado EventDispatcher que basicamente podemos dizer que é responsável por enviar informações sobre o tipo de evento que acontece naquele momento.
Em outras palavras, podemos considerar o "ouvinte de eventos" (addEventListener) como sendo o tal "dedo-duro" da situação. Assim que o ouvinte de eventos notar e receber algum aviso que algo aconteceu na área do Flash, o "ouvinte de eventos" vai correndo contar pro "chefe" Flash o que algo aconteceu com algum dos seus objetos, e se o Flash foi programado pra ouvir e dar atenção sobre esse evento, ele vai chamar seus "capangas" (Function Event Handler: funções que manipula o tal evento) pra tomar alguma atitude e "botar ordem na casa".
No ActionScript 3, os principais eventos estão no package (pacote de classes) flash.events e outros no também no fl.events. Você pode conhecer esses eventos e ter mais detalhes sempre acessando Event no Help do Flash (tecla F1).
Importante notar que, cada objeto no Flash tem seus grupos de eventos dedicado para cada situação(objeto). Por exemplo "Evento de clicar em um objeto" visual usamos o Evento MouseEvent.CLICK que retorna um valor do tipo string ("click") solicitado no addEventListener (Veremos um exemplo sobre isso a seguir).
3. Sintaxe addEventListener
Pra responder qualquer tipo de Evento no Flash, precisamos de 3 etapas fundamentais, sendo elas:
1º - Escolher um alvo que queremos aplicar o evento.
Cadastrar um "ouvinte de eventos" para esse objeto usando a função addEventListener();
Essa função solicita 2 argumentos obrigatórios, sendo 1º argumento Tipo de Evento e 2º argumento qual Função do evento que queremos chamar quando esse tal evento acontecer.
Sintaxe cadastrando um evento para um objeto:
meuObjeto.addEventListener(TipoDeEvento.PROPRIEDADE_DO_EVENTO:String, funcaoQueManipulaEvento:Function);
Ex: Quando clicar em um objeto com nome de instância botao, chama/executa uma função com nome quandoClicarNoBotao():
botao.addEventListener(MouseEvent.CLICK, quandoClicarNoBotao);
Obs: Esses são 2 argumentos obrigatórios para addEventlistener(), existe outros argumentos que são opcionais para tratamentos mais avançados. Mas por agora essa estrutura é o que precisamos saber pra funcionar na maioria dos casos. Caso se interessar em maiores detalhes, confira o Help Flash sobre addEventListener.
2º - Escolher o tipo de evento que queremos ouvir.
Ex.: MouseEvent.CLICK (quando o mouse clicar em algum objeto), etc;
3º - Criar uma função para manipular o evento quando ele acontecer, conhecida como "Event handler function".
É apenas uma função dedicada para o tipo de evento que você quer dar atenção, fazer alguma coisa quando esse evento acontecer.
A função é "especial pra manipular eventos", deve conter apenas um argumento do mesmo tipo de Evento usado no addEventlistener, e também não deve retornar nada (void). Esse argumento da função guarda algumas informações sobre tipo de evento quando ele é disparado e podemos usar de forma dinâmica dentro a função (Vamos ver um exemplo simples mais adiante).
Sintaxe de função que manipula evento (Event handler function):
function funcaoQueManipulaEvento(argumentoDoEvento:TipoDoEvento)void { //seu código aqui, faz alguma coisa com o conteudo. }
4. Adicionando um Evento em um objeto
Usar a função addEventListener é um padrão para responder eventos no AS3. Com esse conceito aprendido já conseguimos fazer um interação simples por exemplo de clicar em botão e chamar um link.
Ex.: no stage, temos apenas um simbolo do tipo botão com nome de instâncias botao e código inserido no 1º frame:
botao.addEventListener(MouseEvent.CLICK, quandoClicarNoBotao); function quandoClicarNoBotao(evento:MouseEvent):void { trace("Você clicou no botao com nome: ", evento.target.name); }
O evento.target.name, é um exemplo usando argumento da função para retornar algum valor do objeto usado. Como a variável evento representa a classe MouseEvent no nosso caso, usando a propriedade target (da classe MouseEvent), pegará exatamente o nosso objeto “alvo” (evento.target) que é no nosso exemplo o objeto botao que sofre esse evento de MouseEvent.CLICK, e depois podemos usar propriedades do objeto “botao”, como exemplo a propriedade name, mostrando o nome do objeto em si.
Você também pode usar a mesma função do mesmo tipo de evento para aplicar em diferentes Objetos.
Ex.: No stage instâncias com nomes: botao1, botao2, botao3, respondendo a mesma função quandoClicarNoBotao quando clicado.
botao1.addEventListener(MouseEvent.CLICK, quandoClicarNoBotao); botao2.addEventListener(MouseEvent.CLICK, quandoClicarNoBotao); botao3.addEventListener(MouseEvent.CLICK, quandoClicarNoBotao); function quandoClicarNoBotao(evento:MouseEvent):void { trace("Você clicou no botao com nome: ", evento.target.name); }
Se você testar esse código, e clicar em cada botão, irá retornar o nomes de cada um deles, usando a mesma função.
5. Removendo um Evento de um objeto
Também podemos parar de "escutar/respnder" um tipo de evento quando não precisamos mais usar ele no código. É uma boa prática e recomendado fazer isso, pois evitamos consumir memória desnecessária do computador. Pra isso, utilizamos a função removeEventListener() que é a mesma idéia da função addEventListener(), mas no caso irá remover um evento que já foi cadastrado antes pela função addEventListener. Deve passar exatamente as mesmas informações que foi passada no addEventListener do objeto(alvo), tipo de evento e função do evento que queremos parar de ouvir.
Baseando no mesmo exemplo anterior do clique no botão. Depois de clicar apenas 1 vez, eu quero remover esse ouvinte de eventos em seguida para o usuário não poder mais clicar no botão. Ficando algo assim:
botao.addEventListener(MouseEvent.CLICK, quandoClicarNoBotao); function quandoClicarNoBotao(evento:Event):void { trace("Você clicou no botao com nome: ", evento.target.name); botao.removeEventListener(MouseEvent.CLICK, quandoClicarNoBotao); }
Esse foi um conceito básico sobre de Evento no AS3, não pare por aqui, o próprio Help do Flash tem bastante informação de como usar e pra que usar eventos. A idéia de utilização é bastante consistente durante todo o código AS3 pra maioria dos casos. Iremos utilizar muitos esses conceitos de eventos nos próximos artigos que tivermos.
Um exemplo de eventos pra quando a carregar externamente uma imagem, poder fazer algo com ela:
Manipulando carregamento externo com AS3
Abraço e até a próxima!
Rodrigo Gonçalves
Equipe AlvoWeb

0 respostas ↓
Não tem nenhum comentário ainda...seja o primeiro.
Faça um comentário