deepTrace for haXe flash9/10
August 19th, 2009
deepTrace any displayObject, and add optional fields to trace
deepTrace will trace the object and all it’s children.
import flash.display.DisplayObject;
import flash.display.DisplayObjectContainer;
import flash.Error;
public static function deepTrace( obj:DisplayObject, ?fields:Array<String>, level:Int = 0 ):Void
{
var tabs:String = "";
var i:Int = 0;
var l:Int = level;
for ( i in 0...l){
tabs += "\t";
}
var printData = function(newField, fieldString)
{
return fieldString + (fieldString != "" ? "; " : "") +newField+ " : " +Reflect.field(obj, newField);
}
if(fields != null && fields.length > 0){
try{
trace(tabs + obj + " -> ( " + Lambda.fold(fields, printData, "") + " )");
}catch(e:Error){
trace(tabs + obj + " -> ( has no fields ["+fields+"] )");
}
}
if(Std.is(obj,DisplayObjectContainer)){
for ( i in 0...Reflect.field(obj, "numChildren") ){
deepTrace( Reflect.field(obj, "getChildAt")(i), fields, level + 1 );
}
}
}
deepTrace(myObject,[“x”,”y”]);
will trace something like
[object myObject] -> ( x : 560; y : 150 )
[object MovieClip] -> ( x : 0; y : -50 )
[object Shape] -> ( x : 0; y : 0 )
[object Shape] -> ( x : 0; y : 0 )
[object Sprite] -> ( x : 200; y : 100 )
[object Sprite] -> ( x : 100 ; y : 300 )
[object SimpleButton] -> ( x : -10 ; y : 100 )
[object TextField] -> ( x : -40 ; y : -30 )
[object Sprite] -> ( x : 300 ; y : 300 )
[object SimpleButton] -> ( x : -10 ; y : 100 )
[object TextField] -> ( x : -40 ; y : -30 )
[object Sprite] -> ( x : 200 ; y : 300 )
[object CustomButton] -> ( x : -37 ; y : 100 )
[object Shape] -> ( x : 0; y : 0 )
[object TextField] -> ( x : 0 ; y : 0 )




