Выбор братьев и сестер MXML с ActionScript, как JavaScript?
Я пытаюсь получить одноуровневый тег mxml аналогично тому, как братья и сестры выбираются в javascript. Это возможно в Actionscript?
Например, когда я нажимаю TextArea
с идентификатором textarea1
Мне нужно, чтобы он сказал мне, что у родного брата есть идентификатор rect1
так что я могу сделать дальнейшую обработку к нему.
<s:Group>
<s:TextArea id="textarea1" click="getSibling(event)" />
<s:Rect id="rect1" />
</s:Group>
3 ответа
Предполагая, что Group, TextArea и Rect являются UIComponents, я думаю, что это должно работать:
private function getSibling(e:Event):void {
var parent:UIComponent = e.currentTarget.parent;
if(parent) {
var len:int = parent.numChildren;
var child:UIComponent;
for(var i:int = 0; i < len; i++) {
child = parent.getChildAt(i) as UIComponent;
if(child && child != e.currentTarget) {
trace(child.id);
}
}
}
}
Сначала я хотел получить доступ к родителю, а затем получить список детей в нем.
function getSibling(e:Event):void {
//get an array of children from the parent.
var children:Array = e.target.parent.getChildren();
//process children as you wish...
}
Это обсуждалось в отношении Javascript здесь.
Надеюсь это поможет.
Ник
Насколько я знаю, нет способа сделать это. Однако и textarea1, и rect1 являются дочерними элементами группы. Если вы дадите группе идентификатор, вы сможете обойти всех детей, чтобы найти всех братьев и сестер TextArea.
Во Flex 3 вы бы использовали цикл for, numChildren и getChildAt. Я подозреваю, что во Flex 4 это будет похоже.