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.

Responder a