package ctz.util { import flash.display.DisplayObject; import flash.display.DisplayObjectContainer; import flash.utils.*; import mx.collections.ArrayCollection; public final class FlexUtils { public function FlexUtils() { throw new Error('static methods only'); } /** * Create a Display Object and add some atts */ public static function createDisplayObject(typeName:Class, atts:Object=null):DisplayObject { try { var o:DisplayObject = new typeName(); if (atts != null) { for (var k:String in atts) { if (o.hasOwnProperty(k)) { o[k] = atts[k]; } else { typeName(o).setStyle(k, atts[k]); } } } } catch (e:Error) { trace('Error in FlexUtils.createDisplayObject: ' + e.message); } return o; } /** * Given a root display object, get all children of the same type, recursively */ public static function getChildrenByType(collection:ArrayCollection, typeName:Class, rootObject:DisplayObjectContainer):void { var dobj:DisplayObject; for (var i:int = 0; i < rootObject.numChildren; i++) { dobj = rootObject.getChildAt(i); if (dobj is typeName) collection.addItem(dobj); if (dobj is DisplayObjectContainer) FlexUtils.getChildrenByType(collection, typeName, dobj as DisplayObjectContainer); } } public static function objDump(o:Object):String { var s:String = ''; for (var key:String in o) s += key + ' => ' + o[key] + '\n'; return s; } } }