Cheguei no flex trabalhando de forma errada, totalmente procedural que erdei do velho e bom VB. Minha necessidade era dentro de uma janela MDI chama a função que tava dentro do Menubar para abrir uma janela referente a solicitação. Mas pensando em manutenção e reutilização do código precisei reaproveitar uma rotina. Com isso não queria chapar Application.application no projeto.
Qual foi a solução
1º – Criar um evento personalizado
2º – Disparar o evento no systemManager
3º – Escutar o evento no MenuBar, tambem pelo systemManager
Criando o evento
package br.com.webinovacoes.eventos
{
import flash.events.Event;
import mx.managers.SystemManager;
public class EventMenuJanela extends Event
{
private var _janela:String;
public function get janela():String{
return this._janela;
}
public function set janela ( v:String):void {
this._janela = v;
/**
// Instancia, configura e dispara o ChangeEvent
var evt:EventMenuJanela = new EventMenuJanela(”janela”);
evt.janela= v;
dispatchEvent( evt );
*/
}
/** Construtor */
public function EventMenuJanela(type:String, bubbles:Boolean=false, cancelable:Boolean=false)
{
super(type, bubbles, cancelable);
}
override public function clone():Event {
return new EventMenuJanela ( type );
}
}
}
Disparando o evento
frm.addEventListener(MouseEvent.CLICK,function(event:MouseEvent):void{
// Instancia, configura e dispara o EventMenuJanela
evtMenuJanela = new EventMenuJanela("janela");
evtMenuJanela.janela = _service;
systemManager.dispatchEvent( evtMenuJanela );
});
Escutando o evento dentro do menubar
...
import br.com.webinovacoes.eventos.EventMenuJanela;
...
/**
* Inicia o Form
*/
private function inicia():void{
// Escuta o evento e redireciona para rotina interna do Menu
systemManager.addEventListener("janela",abreJanela);
}
7 Comentários até o momento
Deixe um comentário
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <pre> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>
Blz hein!! Descobriu e passou pra gente o conhecimento, parabéns e valeu´s!
Comentário por CarlosGarcia 20 20UTC Março 20UTC 2008 @ 09:58Carlos é minimo q posso fazer em comparação q a galera faz. E outra coisa pra aprender o melhor jeito é ensinando
Comentário por betofiote 20 20UTC Março 20UTC 2008 @ 10:04Cara me desculpe mas tenho umas duvidas em relaçao ao seu codigo. Por favor me ajude a entender ^^
public function EventMenuJanela(type:String, bubbles:Boolean=false, cancelable:Boolean=false)
{
super(type, bubbles, cancelable);
}
Esse super() quer dizer que a nova clase tera todas as propriedades e metodos do classe pai?
_______________________________________________
override public function clone():Event {
return new EventMenuJanela ( type );
}
}
}
Porque vc sobrescreve a clone()?
_______________________________________________
systemManager.addEventListener(”janela”,abreJanela);
Essa função abrirá uma janela MDI especifica certo? poderia postar como ficou a função abreJanela? ^^
______________________________________________
No geral eu entendi que vc customizou um evento e
atrelou a ele a execução da função abre janela certo?
Desculpe novamente se estiver sendo chato, mas tenho muita sede de entender como isso funciona e já estou ficando louco aqui ^^
Desde já muito obrigado.
Comentário por Eliézer 20 20UTC Maio 20UTC 2008 @ 17:37Só para registrar meu e-mail correto, no post anterior eu errei no dominio.
Comentário por Eliézer 20 20UTC Maio 20UTC 2008 @ 17:41Olá Beto!
Cara estou com umas duvidas aqui poderia me ajudar a entender melhor seu codigo? ^^
Acredito que na função abreJanela vc faça chamdas aos metodos set e get janela certo? poderia postar como ficou sua função abreJanela?
__________________________________________________
super(type, bubbles, cancelable);
esse super ai seria pra herdar os metodos da super classe?
__________________________________________________
override public function clone():Event {
return new EventMenuJanela ( type );
}
}
}
Pq é necessario sobrescrever esse metodo?
_________________________________________________
Desculpe se estou sendo chato, mas quero
realmente entender como tudo isso funciona e já estou ficando louco aqui, a cada codigo que leio me confundo mais ^^
Desde já obrigado!
Eliézer.
Comentário por Eliézer 21 21UTC Maio 21UTC 2008 @ 09:20Eliézer
Essa função ela é responsavel por atualizar a chamada clone do evento, se não reescrever ela, qdo vc clonar o evento ele vai retornar o evento da classe pai.
Comentário por betofiote 25 25UTC Junho 25UTC 2008 @ 07:24Valeu cara, ajudou bastante.
Comentário por Cristian 22 22UTC Junho 22UTC 2009 @ 18:29