Как получить программный доступ ко всем дочерним элементам DisplayObject? - PullRequest
3 голосов
/ 16 ноября 2010

Как получить доступ ко всем дочерним элементам DisplayObject с помощью кода?(Я ищу что-то вроде movieclip.children)

Я использую это в двух случаях:

1) Чтобы выполнить цикл и переместить все дочерние элементы вложенного MovieClip.

Или

2) Чтобы выполнить цикл и удалить все дочерние элементы MovieClip

Кроме того, это проект Flash CS5.

Ответы [ 3 ]

6 голосов
/ 16 ноября 2010

Эта петля коснется каждого ребенка внутри мувиклипа foo. Я не уверен, что вы собираетесь с ними делать, но вы можете запускать любые методы внутри цикла.

for (var i:uint=0; i<foo.numChildren;i++){
    foo.getChildAt(i).whateverMethodYouNeed();
}
0 голосов
/ 16 ноября 2010

Если вам нужен доступ ко всем детям, включая детей, вы можете попробовать это:

    function doWhatever( mc:DisplayOjectContainer ):void
    {
          if( mc.numChildren > 0 )
             for( var i:int ; i < mc.numChildren ; ++i )
             {
                 //if you need to reposition
                //set the points properties here
                var point:Point = new Point( _x , _y );
                setPosition ( mc.getChildAt(i ) , point );

                //if you need to remove all children
                //do it recursively
                //remove( mc , mc.getChildAt( i );
             }
    }

    function setPosition(mc:DisplayObject , point:Point ):void
    {
        mc.x = point.x ;
        mc.y = point.y;
    }

    function remove(container:DisplayObjectContainer , child:DisplayObject ):void
    {
         //this will remove all children before being removed
         if( child is DisplayObjectContainer )
         {
             var doc:DisplayObjectContainer = child as DisplayObjectContainer;
             doWhatever( doc );
         }

         container.removeChild( child );
         child = null;
    }
0 голосов
/ 16 ноября 2010

Ваш объект - просто экранный объект? Если это UIComponent, вы можете использовать getChildAt () и getChildByName () вместе со свойством numChildren, чтобы их зациклить. Это часть гибкого проекта или проекта только для ActionScript?

У самого DisplayObject нет механизмов для описания его дочерних объектов. Тип самого низкого уровня, который знает о потомках, это DisplayObjectContainer. Возможно, вам придется преобразовать объект как минимум в DisplayObjectContainer, чтобы иметь возможность делать то, что вы хотите. Я хотел бы пойти с UIComponent, хотя, если у вас есть гибкий каркас для работы.

DisplayObject

DisplayObjectContainer

UIComponent

...