Intersection of Children in ActionScript-3

How do you view all children in a DisplayObjectContainer in as3? I need the syntax:

for each(var displayObject:DisplayObject in displayObjectContainer )
{
    displayObject.x += 10;
    displayObject.y += 10;
}
+3
source share
4 answers

Not sure what works for everyone, but it works.

for (var i:int = 0; i<myObj.numChildren; i++)
{
    trace(myObj.getChildAt(i));
}
+12
source

something like this maybe?

function getChildren(target:DisplayObjectContainer):Array {
    var count:uint = target.numChildren;
    var ret:Array = [];
    for (var i:int = 0; i < count; i++) 
        ret.push(target.getChildAt(0));
    return ret;
}   

and then

for each (var child:Array in getChildren(displayObjectContainer)) {
    //....
}

Greetz

back2dos

+2
source

You can use the following recursive function to iterate through all the children of any DisplayObjectContainer class.

function getChildren(dsObject:DisplayObjectContainer, iDepth:int = 0):void
{
     var i:int = 0;
     var sDummyTabs:String = "";
     var dsoChild:DisplayObject;

     for (i ; i < iDepth ; i++)
         sDummyTabs += "\t";

     trace(sDummyTabs + dsObject);

     for (i = 0; i < dsObject.numChildren ; ++i)
     {
         dsoChild = dsObject.getChildAt(i);
         if (dsoChild is DisplayObjectContainer && 0 < DisplayObjectContainer(dsoChild).numChildren)
             getChildren(dsoChild as DisplayObjectContainer,++iDepth);
         else
             trace(sDummyTabs + "\t" + dsoChild);
     }
}

It will display all children in a hierarchical order, just like the DisplayList tree.

+1
source

My two cents.

    public static function traceDisplayList(displayObject:DisplayObject, maxDepth:int = 100, skipClass:Class = null, levelSpace:String = " ", currentDepth:int = 0):void 
    {
        if (skipClass != null) if (displayObject is skipClass) return;
        trace(levelSpace + displayObject.name);  // or any function that clean instance name
        if (displayObject is DisplayObjectContainer && currentDepth < maxDepth)
        {       
            for (var i:int = 0; i < DisplayObjectContainer(displayObject).numChildren; i++)
            {
                traceDisplayList(DisplayObjectContainer(displayObject).getChildAt(i), maxDepth, skipClass, levelSpace + "    ", currentDepth + 1);
            }
        }
    }   
0
source

Source: https://habr.com/ru/post/1714547/


All Articles