Embora ninguém tenha respondido, deixo a solução que utilizei. Embora tenha tentado utilizar o stopimmediatepropagation antes de escrever para aqui, sem resultado, alterei a estrutura de dispatch de eventos e o seu timing, e está a andar. Cada instância secundária da classe envia um evento quando termina a sua execução. Este evento é apanhado pela classe que a criou, parando aí o bubbling (stopImmediatePropagation). Aos primeiros testes parece-me funcionar tendo já testado vários subniveis de execução.
Muito obrigado, Jorge, pelas dicas. :-) Miguel 2012/2/14 Miguel Vaz <[email protected]> > Sim, eu testei ambos, mas o problema persiste, ou seja, o evento é > apanhado em todas as instâncias da classe. > Considerando o remoteobject, não existe forma de conter o evento de > retorno do serviço na instância da classe a que pertence? > Em desespero de causa, até tentei usar "this." na definição do método de > retorno (this.runphphandler), mas não resolve. > On Feb 14, 2012 12:15 AM, "Jorge Raimundo" <[email protected]> > wrote: > >> Tens estes dois métodos. >> stopPropagation e stopImmediatePropagation (no caso seria evt. >> stopImmediatePropagation() ). >> >> Podes ver qual é a diferença de forma breve aqui: >> >> http://nordicnets.com/2010/11/survive-your-flex-interview-%E2%80%93-part-three-how-to-prevent-event-propagation-and-what%E2%80%99s-the-difference-between-stoppropagation-and-stopimmediatepropagation/ >> >> Ou mais em detalhe aqui: >> http://livedocs.adobe.com/flex/3/html/help.html?content=events_08.html >> >> 2012/2/13 Miguel Vaz <[email protected]> >> >>> >>> Boa noite, >>> >>> Estou a ter alguma dificuldade em parar um evento que teima em se >>> propagar para tudo que é lado. >>> >>> Tenho uma classe que faz uma travessia de um grafo, existindo a >>> possibilidade de um nó desse grafo, ser um outro grafo. Esta situação pode >>> acontecer infinitas vezes (quase) - grafos dentro de grafos. >>> Para a travessia, a classe cria instâncias de si própria quando um dos >>> nodos tem um grafo. Um género de recursividade. >>> >>> O problema é que preciso de chamar um serviço em certo tipo de nodos e, >>> quando regresso da chamada, retomo a travessia, mas se o estiver a fazer já >>> numa segunda (ou x) instância da classe, o evento de retorno é apanhado por >>> todas as instâncias da classe. :-P >>> >>> Exemplo de código: >>> >>> // método da classe run_workflow.as que chama o serviço externo >>> public function inits(pre:String):void{ >>> remota = new RemoteObject(); >>> remota.showBusyCursor = true; >>> remota.destination = "GenericFlexDestination"; >>> remota.source = "mainclass"; >>> remota.runPHP.addEventListener(ResultEvent.RESULT, runPHPHandler); // <- >>> é este desgraçado que causa problemas >>> remota.addEventListener(FaultEvent.FAULT, errorHandler); >>> } >>> >>> private function runPHPHandler(evt:ResultEvent):void{ >>> // tralha de retorno da chamada externa >>> } >>> >>> >>> Algures no código, crio uma nova instância da classe assim: >>> >>> var tempRunWF:run_workflow = new run_workflow(); >>> tempRunWF.executar(); >>> >>> Nesta nova instância, obviamente, existe um método "inits()" com o mesmo >>> evento (ver acima, é o desgraçado), e sempre que faz trigger, a instância >>> pai da classe apanha também o evento. >>> >>> Desculpem se a explicação é confusa. Estou a testar várias situações, >>> mas até agora ainda nada. Já tentei stopImmediatePropagation no Handler, >>> mas nada, o evento é apanhado em todo lado. >>> >>> Alguma dica, por muito abstracta que seja? >>> >>> Muito obrigado. >>> >>> Miguel >>> >>> -- >>> Recebeu esta mensagem porque está inscrito no grupo "Mailing List da >>> Comunidade Portuguesa de Rich Internet Applications - www.riapt.org" >>> dos Grupos do Google. >>> Para publicar uma mensagem neste grupo, envie um e-mail para >>> [email protected]. >>> Para anular a inscrição neste grupo, envie um e-mail para >>> [email protected]. >>> Para ver mais opções, visite este grupo em >>> http://groups.google.com/group/riapt?hl=pt-PT. >>> >> >> -- >> Recebeu esta mensagem porque está inscrito no grupo "Mailing List da >> Comunidade Portuguesa de Rich Internet Applications - www.riapt.org" dos >> Grupos do Google. >> Para publicar uma mensagem neste grupo, envie um e-mail para >> [email protected]. >> Para anular a inscrição neste grupo, envie um e-mail para >> [email protected]. >> Para ver mais opções, visite este grupo em >> http://groups.google.com/group/riapt?hl=pt-PT. >> > -- Recebeu esta mensagem porque está inscrito no grupo "Mailing List da Comunidade Portuguesa de Rich Internet Applications - www.riapt.org" dos Grupos do Google. Para publicar uma mensagem neste grupo, envie um e-mail para [email protected]. Para anular a inscrição neste grupo, envie um e-mail para [email protected]. Para ver mais opções, visite este grupo em http://groups.google.com/group/riapt?hl=pt-PT.
