Recursive iteration through every component instance

actionscript-3apache-flexmxml

I have various custom component instances in my flex app. I want to loop through them recursively and get their instance Ids. The recursive part is very important to me.
Can someone tell me what's the best way to do it?
I have tried doing this, but it didn't do recursive:

for each (var myItem:* in this.MasterContainer.childDescriptors)
{
   trace(myItem.id);
}

Best Answer

This will do it:

private function findControlsRecursive(current:DisplayObjectContainer, controls:ArrayCollection):void
{
    for(var idx:int = 0; idx < current.numChildren; idx++)
    {
        var child:DisplayObject = current.getChildAt(idx);
        controls.addItem(child.name);
        var childContainer:DisplayObjectContainer = child as DisplayObjectContainer;
        if(childContainer)
        {
            findControlsRecursive(childContainer, controls);
        }
    } 
}

public function findControls():ArrayCollection
{
    var controls:ArrayCollection = new ArrayCollection();
    findControlsRecursive(Application.application as DisplayObjectContainer, controls);
    return controls;
}
Related Topic