/** * @author: Eric Feminella * @project: AS3 Local Debugger * @url: http://www.ericfeminella.com */ package { public class TraceObject { public static function filterObject(obj:Object, recursivelyTraceAll:Boolean):void { if (obj is Array) { if (obj[0] != null) { e.trace("\nObject is of Type: Array[Indexed]\nIndexed as follows:"); for (var i:Number = 0; i < obj.length; i++) { if (obj[i] is Object || obj[i] is Array) { if (recursivelyTraceAll) { TraceObject.filterObject(obj[i], true); } else { e.trace("\t[" + i + "] = " + obj[i] + ""); } } else { e.trace("\t[" + i + "] = " + obj[i] + ""); } } } else { e.trace("\nObject is of Type: Array[Associative]\nKeyed as follows:"); for (var element:* in obj) { if (element is Object || element is Array) { if (recursivelyTraceAll) { TraceObject.filterObject(element, true); } else { e.trace("\t['" + element + "'] = " + obj[element]); } } else { e.trace("\t['" + element + "'] = " + obj[element]); } } } } else if (obj is Object) { e.trace("\nObject is of Type: " + typeof(obj)); for (var prop:* in obj){ if (prop is Object || prop is Array) { if (recursivelyTraceAll) { TraceObject.filterObject(prop, true); } else { e.trace("\t\t." + prop + " = " + obj[prop]); } } else { e.trace("\t\t." + prop + " = " + obj[prop]); } } } else if (obj == null) { e.trace("A type of undefined has been set for: " + obj); } } } }