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

Actionscript:
  1. import mx.utils.Delegate;
  2. import mx.events.EventDispatcher;
  3. import mx.controls.*;
  4. class Eventos extends MovieClip {
  5. var addEventListener:Function;
  6. var removeEventListener:Function;
  7. var dispatchEvent:Function;
  8. var bt_Falar:Button;
  9. var bt_Andar:Button;
  10. var txt_Evento:TextInput;
  11. function Eventos() {
  12. EventDispatcher.initialize(this);
  13. }
  14. function onLoad() {
  15. this.addEventListener("onFalar", Delegate.create(this, onFalar));
  16. this.addEventListener("onAndar", Delegate.create(this, onAndar));
  17. this.bt_Falar.addEventListener("click", Delegate.create(this, geraEventoFalar));
  18. this.bt_Andar.addEventListener("click", Delegate.create(this, geraEventoAndar));
  19. }
  20. private function geraEventoFalar() {
  21. dispatchEvent({type:'onFalar', target:this});
  22. }
  23. private function geraEventoAndar() {
  24. dispatchEvent({type:'onAndar', target:this});
  25. }
  26. private function onAndar() {
  27. this.txt_Evento.text = 'onAndar';
  28. trace('onAndar');
  29. }
  30. private function onFalar() {
  31. this.txt_Evento.text = 'onFalar';
  32. trace('onFalar');
  33. }
  34. }

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

Leave a Reply