AS3 / Flex 4: maneira mais prática de encontrar crianças aninhadas
Estou meio que pulando de cabeça para algumas coisas do Flex / AIR. Tenho um histórico bastante sólido com o AS3, mas, dada a complexidade hierárquica inerente do Flex (em comparação com o Flash normal), estou com um problema.
Vamos supor que você tenha um aplicativo em que praticamente tudo é orientado a eventos (comum). O acesso a elementos próximos ao destino do evento, ou o próprio destino do evento, é trivial. Estou tentando encontrar, no entanto, a maneira mais prática (leia-se: melhor, mais eficiente) de encontrar crianças que estão muito distantes do contexto atual.
Eu sei que existem funções comogetChildAt()
egetChildByName()
, mas que assume um contexto pai; e se o elemento (Flex) que você está procurando for vários pais acima, em um irmão, e depois vários filhos abaixo? Tomamos como certo o jQuery que faz isso facilmente, mas obviamente não temos esse luxo no AS3.
Algum dos seguintes itens é válido? Existe uma maneira melhor?
Faça uma iteração entre os pais e os pais dos pais até encontrar um ponto de parada, encontre o irmão e interaja com os filhos e os filhos deles até encontrar o alvo;
Mantenha os principais objetos em um armazenamento de objetos global (sic) e faça referência a eles conforme necessário (yech)
Use notação de ponto específica para alcançar o alvo, incluindo elementos (como peles e seus recipientes - yech novamente)
Qualquer pensamento seria apreciado.
Editar:
Para esclarecer, vamos usar um aplicativo Flex 4 AIR vazio. Nós temosWindowedApplication
como raiz, obviamente, e vamos adicionar doisSkinnableContainer
crianças com identificaçãonavContainer
emainContainer
, respectivamente. Ambos têm skins personalizadas. DentromainContainer
temos outroSkinnableContainer
com um layout vertical e IDmainContent
, e como um de seus filhos, ele tem um objeto (qualquer um serve - uma faíscaBorderContainer
, talvez) com o IDanimatedBox
, por exemplo. Dentro donavContainer
nós temos uma faíscaButton
, que tem um ouvinte vinculado aMouseEvent.CLICK
. Dentro dessa função, vamos querer acessaranimatedBox
(nativeWindow.mainContainer.mainContent.animatedBox
) e animá-lo para alterar, digamos, sua largura.
O objetivo é acessar essa distânciaDisplayObject
(animatedBox
) de uma maneira tão discreta e eficiente quanto possível, enquanto ainda estou em conformidade com os padrões Flex que claramente ainda tenho que possuir. :)