Mais ou menos.
Faça(m) o seguinte:
1. coloque um container no palco. Chame-o de container (nome de var ou
id)
2. coloque um outro objeto dentro dele. Chame-o de cchild (nome de var
ou id)
OBS: o container deve ser maior que o filho (width e height).
Use o seguinte script:
container.addEventListener(MouseEvent.CLICK, clickItPhase);
//container.addEventListener(MouseEvent.CLICK, clickItPhase, true);
function clickItPhase(evt:MouseEvent):void{
trace("clickItPhase- phase: "+evt.eventPhase+", target:
"+evt.target.name)
}
Se deixares apenas a primeira chamada sem comentários (como está no
exemplo), verás que nunca dispara a fase 1, ou seja, a do pai
(container). O trace será:
clickItPhase- phase: 2, target: container // quando clicar no
container
clickItPhase- phase: 3, target: cchild //quando clicar no cchild
Também veja que usei target, ao invés de currentTarget, pois essa
propriedade define quem está efetivamente processando o evento.
Se deixares apenas a segunda chamada sem comentários, o resultado
será:
clickItPhase- phase: 1, target: cchild
Porém, apenas quando clicas no cchild. Veja que apesar do container se
registrar com o evento, o target é o filho dele. Isso porque se usares
useCapture=true, o objeto que se registrou não vai receber a
notificação do evento. A fase "at-target" (quando está no alvo) não
acontece.
Mas ele continua sendo disparado para "dentro" da árvore, por isso
chega no filho.
A fase 1 é de capture: apenas o pai (topmost object) "escuta"
A fase 2 é a do target
A fase 3 é de bubbling, quando ele volta, dos filhos para os pais.
--~--~---------~--~----~------------~-------~--~----~
Você recebeu esta mensagem porque está inscrito na lista "flexdev"
Para enviar uma mensagem, envie um e-mail para [email protected]
Para sair da lista, envie um email em branco para
[email protected]
Mais opções estão disponíveis em http://groups.google.com/group/flexdev
-~----------~----~----~----~------~----~------~--~---