Ue.. entao esse é o caso mais simples:
Dá uma olhada abaixo:

Na tela de cadastroDeFuncionario:

private var abreJanelaTelefone():void {

   var telefoneWin : CadastroDeTelefone = new CadastroDeTelefone();

//aqui vc amarra o listener. se o evento for disparado dentro da janela,
esse listener vai captura-lo.
   telefoneWin.addEventListener(EVENTO_DA_JANELA_TELEFONE,
metodoNaJanelaDeCadastro);

    PopUpManager.addPopUp(telefoneWin);

}


Agora dentro da CadastroDeTelefone:
dispatchEvent(Event("EVENTO_DA_JANELA_TELEFONE"));




simples assim.




2009/10/14 Andre de Souza Martins <andre_defacerbl...@hotmail.com>

>  Ola Mario,
>
>          As duas janelas tem o seguinte nivel de hierarquia...
>
> Application
>       |----------CadastroDeFuncionario
>                     |----------CadastroDeTelefone
>
> ou seja, a CadastroDeFuncionario é que cria a Cadastro de Telefone, e estou
> tentando enviar um evento da Cadastro de Telefone para a Cadastro de
> Funcionario.
>
>
> Agradecido
>
> André Martins
>
> ------------------------------
> Date: Tue, 13 Oct 2009 01:44:33 -0300
> Subject: [flexdev] Re: [Urgente] Disparar Eventos no Adobe Flex
> From: juninho...@gmail.com
>
> To: flexdev@googlegroups.com
>
> Cara....
> duas duas janelas estão contidas no mesmo nível de hierarquia da
> displayList?
>
> Se nem souber oq é isso... daí vc vai apanhar muito com eventos.
> Lembre q os eventos navegam pelas camadas de "baixo para cima" nessa
> hierarquia. Se vc tem duas janelas na mesma ordem, uma NUNCA vai ouvir a
> outra... A MENOS que elas tenham algo em comum, mas daí o listener tem q ser
> adicionado nesse objeto em comum (pode ser o parent que o Clayton sugeriu,
> embora fique um pouco acoplado e isso também te obrigue que o parent entre
> as duas janelas seja SEMPRE o mesmo objeto, ou seja.. reusabilidade
> comprometida).
>
> Outra ideia seria centralizar isso numa classe unica (singleton) que
> extends de EventDispatcher. Isso permitirá a essa classe q ela amarre
> listeners e que tb dispare seus eventos personalizados. Assim vc usaria essa
> classe para transportar os objetos de *qualquer lugar *da sua app* para
> qualquer outro lugar* onde esse mesmo singleton conter um listener. A
> idéia é semelhante ao pattern "proxy" onde vc pode centralizar todos seus
> custom events em um unico "meio de transporte".
>
> Nao gosto muito dessa tecnica, mas pode ser util em alguns casos!(ja tive q
> usa-la, e tb te poupa usar eventos borbulhados ou ter varios dispatchEvents
> desnecessários).
>
> Enfim... só mesmo tendo a ideia de eventos compreendida é q te sugiro a
> partir para algo do tipo.
>
>
>
>
> 2009/10/12 Clayton <marquesclayt...@gmail.com>
>
> [Event(name="addTelefoneEvent",
> type="fr.globalit.realtx.events.AddTelefoneEvent")] // Isto deve estar no
> form que dispara o evento e não no que escuta, ou seja no
> FormAdicionarTelefone;
>
>
> dispatchEvent(new AddTelefoneEvent(telefone,
> AddTelefoneEvent.ADD_TELEFONE_FUNCIONARIO, true)); // isto deve ser alterado
> pois está errado. Mude para:
>
> dispatchEvent(new AddTelefoneEvent(telefone, "addTelefoneEvent", true));
>
>
>
> 2009/10/12 Andre de Souza Martins <andre_defacerbl...@hotmail.com>
>
> Ola Clayton,
>
>             acho que talvez nao me expliquei direito, vamos la,
>
>             vou definir melhor meu problema, tenho um componente
> FormAdicionarTelefone, ele é um titlewindow, ele sera o formulario onde o
> usuario ira digitar os dados de um telefone, e ao usuario clicar em salvar,
> este deve enviar os dados do telefone para o FormCadastrarFuncionario, estou
> tentando fazer isso via este evento,
>
> esta parte aqui:
>
> [Event(name="addTelefoneEvent",
> type="fr.globalit.realtx.events.AddTelefoneEvent")]
>
> coloquei apenas no titlewindow FormCadastrarFuncionario, que é o
> interessado em receber o evento, estou adicionando tambem o listener para o
> evento no metodo que inicializa o componente FormCadastrarFuncionario:
>
> private function inicializar():void {
>                 parent.addEventListener("addTelefoneEvent", addTelefone);
> }
>
> Agora vamos ao componente FormAdicionarTelefone:
>
> Neste formulario o codigo mais importante é o que dispara o evento:
>
> dispatchEvent(new AddTelefoneEvent(telefone,
> AddTelefoneEvent.ADD_TELEFONE_FUNCIONARIO, true));
>
> a parte AddTelefoneEvent.ADD_TELEFONE_FUNCIONARIO eu fiz pela seguinte
> razao, eu quero reaproveitar o evento na tela de Cadastro de Clientes, e ai
> terei o mesmo evento, porem com a constante ADD_TELEFONE_CLIENTE, assim
> daria para diferenciar os dois.
>
> o codigo do meu evento continua o mesmo, o que devo mudar?
>
>
> Abraços e obrigado pelas respostas
>
> André Martins
>
> ------------------------------
> Date: Mon, 12 Oct 2009 16:19:31 -0300
>
> Subject: [flexdev] Re: [Urgente] Disparar Eventos no Adobe Flex
> From: marquesclayt...@gmail.com
> To: flexdev@googlegroups.com
>
> André tem alguns considerações neste seu código:
>
>
>
> //meto que atribui valores ao vo telefone...
> dispatchEvent(new 
> AddTelefoneEvent(telefone,AddTelefoneEvent.ADD_TELEFONE_FUNCIONARIO,
> true));
>
> //O que está em azul substitua por "addTelefoneEvent" (com aspas), pois
> foi assim que você colocou no name do evento quando o declarou.
>
> coloquei o telefone no construtor do evento.
>
>
> no meu componente FormCadastrarFuncionario, que é o componente que deve
> receber o evento, fiz o seguinte:
> [Event(name="addTelefoneEvent",
> type="fr.globalit.realtx.events.AddTelefoneEvent")]
>
> //Neste caso o que está em azul é desnecessário pois somente irá escutar o
> evento. Isto deve estar na componente que irá disparar o evento.
>
> e no metodo que inicializa a classe...
> parent.addEventListener("addTelefoneEvent", addTelefone);
> meu handler addTelefone esta apenas mostrando um alert com o numero do
> telefone, para eu ver que o evento foi realmente disparado, mas nao esta
> funcionando ainda, preciso fazer mais alguma coisa? segue abaixo o codigo do
> meu AddTelefoneEvent
> package fr.globalit.realtx.events
> {
>     import flash.events.Event;
>
>     import fr.globalit.realtx.modelo.Telefone;
>     public class AddTelefoneEvent extends Event
>     {
>         public static const ADD_TELEFONE_FUNCIONARIO:String =
> "addTelefoneFuncionario";// Desnecessário
>         public var telefone:Telefone = new Telefone(); // Não precisa
> instanciar, tb não atrapalha.
>
>         public function AddTelefoneEvent(telefone:Telefone, type:String,
> bubbles:Boolean=false)
>         {
>             super(type, bubbles);
>             this.telefone = telefone;
>         }
>
>     }
> }
>
>   2009/10/12 Andre de Souza Martins <andre_defacerbl...@hotmail.com>
>
>   Ola Clayton,
>
>                 Primeiramente muito obrigado pela resposta, tentei
> implementar mas nao esta funcionando desta forma, veja como estou fazendo...
>
> no componente AdicionarTelefone eu tenho o seguinte:
>
> //meto que atribui valores ao vo telefone...
> dispatchEvent(new AddTelefoneEvent(telefone,
> AddTelefoneEvent.ADD_TELEFONE_FUNCIONARIO, true));
>
> coloquei o telefone no construtor do evento.
>
> no meu componente FormCadastrarFuncionario, que é o componente que deve
> receber o evento, fiz o seguinte:
>
> [Event(name="addTelefoneEvent",
> type="fr.globalit.realtx.events.AddTelefoneEvent")]
>
> e no metodo que inicializa a classe...
>
> parent.addEventListener("addTelefoneEvent", addTelefone);
>
> meu handler addTelefone esta apenas mostrando um alert com o numero do
> telefone, para eu ver que o evento foi realmente disparado, mas nao esta
> funcionando ainda, preciso fazer mais alguma coisa? segue abaixo o codigo do
> meu AddTelefoneEvent
>
> package fr.globalit.realtx.events
> {
>     import flash.events.Event;
>
>     import fr.globalit.realtx.modelo.Telefone;
>
>     public class AddTelefoneEvent extends Event
>     {
>         public static const ADD_TELEFONE_FUNCIONARIO:String =
> "addTelefoneFuncionario";
>         public var telefone:Telefone = new Telefone();
>
>         public function AddTelefoneEvent(telefone:Telefone, type:String,
> bubbles:Boolean=false)
>         {
>             super(type, bubbles);
>             this.telefone = telefone;
>         }
>
>     }
> }
>
> Agradecido pela ajuda!
>
> André Martins
>
> ------------------------------
> Date: Mon, 12 Oct 2009 15:23:52 -0300
> Subject: [flexdev] Re: [Urgente] Disparar Eventos no Adobe Flex
> From: marquesclayt...@gmail.com
> To: flexdev@googlegroups.com
>
> Crie uma classe de evento para este caso extendendo de Event.
> Neste nova classe de evento que criou defina um objeto do tipo Object
> mesmo, deve ser public,por exemplo:
>
> public obj : Object;
>
> No método construtor deixe apenas como parametro o type e o bubbles,
> passando tb como parametro para o super estes dois.
>
> Pronto está criado sua classe de persolizada.
>
> Na classe,que é a janela que deve disparar o evento faça o seguinte:
>
> - logo após os imports, pode ser antes tb não faz diferença, apenas sugeri
> para organização, define o seu evento da seguinte forma:
> [Event(name="nome_do_Evento", type="o_packge.SuaClasseDeEvento")]
>
>
> quando tiver que disparar este evento:
>
> var evento : SeuEvento = new SeuEvento("nome_do_Evento",true)   // o true
> define que o evento irá propagar por borbulhamento;
> evento.obj = Ojeto_Que_Ira_Para_A_Outra_Janela;
> dispachEvent(evento);
>
>
> Na janela que vc disparou adicione o listenner no parent - Isto é possível
> por causa da propagação por borbulhamento, mesmo o evento sendo disparadopor
> outro componente;
>
> parent.addEventListenner("nome_do_Evento", handler);
>
> no método handler defina oque deve ser executado.
>
>
>
>  2009/10/12 Andre de Souza Martins <andre_defacerbl...@hotmail.com>
>
>  Ola Pessoal!
>
>
>                minha situacao é a seguinte, tenho duas janelas em meu
> sistema, uma onde o usuario entra alguns dados, e outra onde estes dados
> deverao ser mostrados, o que acontece, eu preciso que a janela a dispare um
> evento que a janela b possa capturar... porem isto esta sendo um problema
> para mim pois estou disparando o evento numa janela e a janela b nao
> consegue captura-lo, consegui fazer funcionar adicionando o evento no
> Application.application, mas ficou com cara de gambiarra demais pra mim,
> queria algo mais independente... se possivel claro, estou usando cairngorm,
> mas nao queria colocar estes dados no model locator, pois se trata apenas de
> um telefone... alguem poderia dar uma luz?
>
>
> Abraços Pessoal
>
> André Martins
>
> ------------------------------
> Novo Internet Explorer 8: traduza com apenas um clique. Baixe agora, é
> grátis!<http://brasil.microsoft.com.br/IE8/mergulhe/?utm_source=MSN;Hotmail&utm_medium=Tagline&utm_campaign=IE8>
>
> --
> Clayton Marques Pereira
>
>
>
> ------------------------------
> Novo Internet Explorer 8: traduza com apenas um clique. Baixe agora, é
> grátis!<http://brasil.microsoft.com.br/IE8/mergulhe/?utm_source=MSN;Hotmail&utm_medium=Tagline&utm_campaign=IE8>
>
> --
> Clayton Marques Pereira
>
>
>
> ------------------------------
> Com o Novo Internet Explorer 8 suas abas se organizam por cor. Baixe
> agora, é 
> grátis!<http://brasil.microsoft.com.br/IE8/mergulhe/?utm_source=MSN;Hotmail&utm_medium=Tagline&utm_campaign=IE8>
>
>
> --
> Clayton Marques Pereira
>
>
>
>
>
> --
> Mario Junior
> Enterprise Java / Flex Architectures
> Adobe Certified Expert Flex 3 with AIR
>
> Sofshore Informática
> http://www.sofshore.com.br
> +55 (48) 3337 2003
> Rua Pastor Willian Richard Schisler Filho 452 sl 102, 88034-100 Itacorubi
> Florianopolis SC Brasil
>
>
>
> ------------------------------
> Novo Internet Explorer 8: traduza com apenas um clique. Baixe agora, é
> grátis!<http://brasil.microsoft.com.br/IE8/mergulhe/?utm_source=MSN%3BHotmail&utm_medium=Tagline&utm_campaign=IE8>
> >
>


-- 
Mario Junior
Enterprise Java / Flex Architectures
Adobe Certified Expert Flex 3 with AIR

Sofshore Informática
http://www.sofshore.com.br
+55 (48) 3337 2003
Rua Pastor Willian Richard Schisler Filho 452 sl 102, 88034-100 Itacorubi
Florianopolis SC Brasil

--~--~---------~--~----~------------~-------~--~----~
Você recebeu esta mensagem porque está inscrito na lista "flexdev"
Para enviar uma mensagem, envie um e-mail para flexdev@googlegroups.com
Para sair da lista, envie um email em branco para 
flexdev-unsubscr...@googlegroups.com
Mais opções estão disponíveis em http://groups.google.com/group/flexdev
-~----------~----~----~----~------~----~------~--~---

Reply via email to