Это один из классов, который был написан мной очень давно, но используется без внесения каких-либо правок.

Код AS3:
package artshlagin.utils
{
/**
* ...
* @author Artem Shlagin
*/
public class Tracer {
public static var traceFunction:Function = trace;
public static var nameDelimiter:String = " => ";
public function Tracer() {
throw new Error("Class is static");
}
public static function fullTraceObject(object:Object):void {
recoursiveTrace(object);
}
private static function recoursiveTrace(o:Object, startValue:int = 0):void {
for (var name:Object in o) {
var otst:String = "";
if (startValue > 0) {
var i:int = startValue;
while (i--) otst += " ";
}
traceFunction.call(null, otst + name + nameDelimiter + o[name]);
if ((typeof o[name]) === "object") recoursiveTrace(o[name], startValue+1);
}
}
}
}
Использовать:

Код AS3:
Tracer.fullTraceObject(stage.loaderInfo.parameters);
Можно менять поток вывода и стрелочку между ключом и значением )

Код AS3:
Tracer.traceFunction = _someTextField.appendText;
Tracer.nameDelimiter = "<->";