andré.santana [webdesign blog]

Eventos

Posted on: 8 maio, 2007

Evento é um conceito extremamente útil e importante para o gerenciamento da interatividade em sistemas. Eventos acontecem a todo instante no momento da interação, quando o usuário clica em um botão, arrasta uma janela, move o mouse, dentre outras ações.

Analogamente à realidade, podemos citar o sistema nervoso humano que responde a cada interação com o nosso corpo com o ambiente. Neste caso, o sistema nervoso é que fica aguardando um evento ocorrer para, logo em seguida, avisar ao cérebro, e assim o cérebro poder responder.

Em programação orientada a objetos, o sistema de eventos é simples, existem objetos que disparam eventos (geradores de eventos) e outros que ficam na espera por eventos (escutadores de eventos). Um exemplo de objeto gerador de evento é um simples botão que ao ser clicado dispara um determinado evento.

No Actionscript, os eventos podem ocorrer de duas formas: um objeto dispara um evento para muitos outros (um para muitos) ou dispara um evento para um único outro objeto (um para um). A primeira forma é muito útil e importante quando temos que modificar vários objetos em função de uma ação específica, por exemplo, quando temos uma interface e queremos modificar vários elementos com apenas um clique, ou uma tecla apertada, a melhor forma de se fazer é utilizando um objeto que dispara o evento para muitos outros.

Na prática, o Flash possui uma classe nativa do pacote mx.events chamada EventDispatcher. Objetos que estendem esta classe são disparadores (ou dispachadores) de eventos, ou seja, são neles que os eventos ocorrem e em seguida são dispachados para um escutador.

// Classe disparadora de evento

import mx.events.EventDispatcher;
class disparador extends EventDispatcher {
function disparador() {
}
public function DisparaEvento() {
dispatchEvent({type:”evento”});
}
}

Depois de definida, quando você constrói um objeto desta classe, pode executar seus métodos normalmente, mas alguns métodos podem influênciar no sistema de forma abrangente, modificando objetos, alterando a interface, criando novos objetos ou qualquer outra consequência, neste caso definimos o método DisparaEvento que dispara o eveno chamado “evento”.

import disparador;
var disp:disparador = new disparador();
var listener1:Object = new Object();
var listener2:Object = new Object();
var listener3:Object = new Object();
listener1.evento = function() {
trace(“Listener 1”);
};
listener2.evento = function() {
trace(“Listener 2”);
};
listener3.evento = function() {
trace(“Listener 3”);
};
disp.addEventListener(“evento”, listener1);
disp.addEventListener(“evento”, listener2);
disp.addEventListener(“evento”, listener3);
disp.DisparaEvento();

Observe que, neste código, o objeto disp, ao executar o método DisparaEvento, influência outros 3 objetos (escutadores: listener1, listener2, listener3) de formas distintas. Um exemplo de caso em que podemos utilizar objetos escutadores é quando temos uma interface em várias línguas e quaremos modificar todos os elementos desta com apenas um clique (um disparador dispara um evento para vários listeners que modificam a interface).

Eventos de um para um são bem práticos e menos complexos. Quando temos um disparador que, ao disparar um determinado evento, implicam apenas uma conseqüência no sistema, utilizamos eventos de um para um. Veja:

class disparador2 {
public var onDispara:Function;
function disparador2() {
}
public function DisparaEvento() {
onDispara();
}
}

E para escutar o evento não é necessário criar objetos escutadores. Veja:

import disparador2;
var disp2:disparador2 = new disparador2();
disp2.onDispara = function() {
trace(“Disparou”);
};
disp2.DisparaEvento();

Download do arquivo de exemplo

por Caio Meriguetti 

1 Response to "Eventos"

Valeu cara, o teu ta bom também. Abraço ae.

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

Seja Bem-Vindo!

@andrehsantana

maio 2007
S T Q Q S S D
    jun »
 123456
78910111213
14151617181920
21222324252627
28293031  

RSS Feeds Deliciosos

  • Ocorreu um erro. É provável que o feed esteja indisponível. Tente mais tarde.

Flickr!

Cell

Dia do Design

Geometric

Logotipo Pé do Palco // 02

Logotipo Pé do Palco // 01

Mais fotos

Blog Stats

  • 235,108 hits
%d blogueiros gostam disto: