Utilizando Delegate
Salve pessoal.
Hoje, eu tive uma dúvida sobre como utilizar a classe "Delegate", para falar a verdade, eu ainda estou estudando OOP e nunca tinha usado o "Delegate", tendo esse problema fui para o Google buscar ajuda, e antes falei com o Luiz ( Lew Lara ) para me dar uma dica, feito isso, achei no fórum do Imasters uma boa dica para aprender a trabalhar com isso, vou postar o código aqui para facilitar a leitura de vocês, mas os créditos dele são do usuário "Rodrigo M. Rodrigues" do fórum do imasters, e pode ser encontrado na integra clicando aqui
-
import mx.utils.Delegate;
-
import mx.events.EventDispatcher;
-
import mx.controls.*;
-
class Eventos extends MovieClip {
-
var addEventListener:Function;
-
var removeEventListener:Function;
-
var dispatchEvent:Function;
-
var bt_Falar:Button;
-
var bt_Andar:Button;
-
var txt_Evento:TextInput;
-
function Eventos() {
-
EventDispatcher.initialize(this);
-
}
-
function onLoad() {
-
this.addEventListener("onFalar", Delegate.create(this, onFalar));
-
this.addEventListener("onAndar", Delegate.create(this, onAndar));
-
this.bt_Falar.addEventListener("click", Delegate.create(this, geraEventoFalar));
-
this.bt_Andar.addEventListener("click", Delegate.create(this, geraEventoAndar));
-
}
-
private function geraEventoFalar() {
-
dispatchEvent({type:'onFalar', target:this});
-
}
-
private function geraEventoAndar() {
-
dispatchEvent({type:'onAndar', target:this});
-
}
-
private function onAndar() {
-
this.txt_Evento.text = 'onAndar';
-
trace('onAndar');
-
}
-
private function onFalar() {
-
this.txt_Evento.text = 'onFalar';
-
trace('onFalar');
-
}
-
}
Este exemplo foi criado levando em conta que você tenha um .fla com um movie clip com qualquer ou nenhum nome de instancia vinculado com esta classe e que tenha no palco os componentes:
bt_Falar : Button
bt_Andar : Button
txt_Evento : TextInput
Os eventos podem ser gerados a qualquer momento tanto na classe ouvinte ou em outras classes desde que a classe ouvinte adicione o evento na classe que dispara.
var $geraEventos : GeraEventos;
$geraEventos.addEventListener("onFalar", Delegate.create(this, onFalar));
onde " GeraEventos " é uma classe que esta disparando o evento " onFalar " .
Detalhes;
this.addEventListener("onFalar", Delegate.create(this, onFalar));" this. " É O ESCOPO DA ONDE ESTOU ADICIONANDO O EVENTO.
" onFalar " É O EVENTO QUE ESTOU OUVINDO.
" Delegate.create(this, " É O ESCOPO DA ONDE ESTA A FUNÇÃO QUE SERÁ EXECUTADA QUANDO OCORRER O EVENTO.
" onFalar)); " É A FUNÇÃO QUE SERÁ EXECUTADA QUANDO OCORRER O EVENTO
Detalhes;
dispatchEvent( {type : 'onAndar' , target : this } );" {type : 'onAndar' , " É O EVENTO QUE ESTOU GERANDO.
" target : this } ); " É O ESCOPO DE ONDE ESTA ACONTECENDO O EVENTO.
Gostaria de agradecer ao "Rodrigo M. Rodrigues" que eu nem conheço, mas ações como essas de ajudar ao próximo em fóruns sem nada em troca é que ajudam a nossa comunidade a evoluir !
Abraço a todos