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.