Aufgabenstellung
Gelegentlich ist es nötig über alle Komponenten eines mx:Canvas-Elements, einem Container oder einer UIComponent zu iterieren.
Beispiele:
* Deaktivieren von allen Controls eines bestimmten Typs (alle Textfelder ausgrauen)
* Neuschriftung von allen Labels
* Deaktivieren aller Reiter
Ansatz
Durch den Typecast in einen DisplayObjectContainer lässt sich über jedes UI-Element iterieren. Eine Startmethode übergibt das Canvas, bzw. das UI-Urelement. Die Rekursionsmethode castet in den kompatiblen Supertyp DisplayObjectContainer und verfügt über Möglichkeiten der Iteration über seine Eigenschaften.
Lösung
// Startmethode übergibt Urelement der Rekursion
public function startSearch():void
{
searchRecursion(this);
}
// Rekursionsmethode ruft sich selbst auf wenn Child-Elemente v.h.
public function searchRecursion(current:DisplayObjectContainer):void
{
for ( var i:Number=0; i< current.numChildren; i++)
{
var child:DisplayObject = current.getChildAt(i);
trace(getQualifiedClassName(child));
var childContainer:DisplayObjectContainer = child as DisplayObjectContainer;
if(childContainer)
{
searchRecursion(childContainer);
}
}
}
[/javascript]