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.

Responder a