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 -~----------~----~----~----~------~----~------~--~---