Выбор братьев и сестер 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 здесь.

Надеюсь это поможет.

Ник

http://nickgs.com/

Насколько я знаю, нет способа сделать это. Однако и textarea1, и rect1 являются дочерними элементами группы. Если вы дадите группе идентификатор, вы сможете обойти всех детей, чтобы найти всех братьев и сестер TextArea.

Во Flex 3 вы бы использовали цикл for, numChildren и getChildAt. Я подозреваю, что во Flex 4 это будет похоже.

Другие вопросы по тегам