Tracing to Firebug in AS3
24/09/2008I realize that I’m late to the party with this, but so far all the examples I’ve seen have been a bit overkill for my needs, so I’m putting this out there in case someone else might have some use for it.
Of course,
1 | trace(); |
is a Flash developers best friend. Hell, I sometimes feel I’d be happier if I never had to go beyond the output panel, but that’s neither here nor there. The trace statement however, as beautiful as it may be, doesn’t help you a lot when you’re debugging the project in the browser, and therefore Adobe created
1 | ExternalInterface |
to let you output the traces to Firebug. But calling
1 | ExternalInterface.call("console.log", args); |
every time you want to output something is a pain in the ass, and going through your code to change all your trace calls to ExternalInterface calls is an even bigger pain in the ass, and therefore developers created various methods to ease the pain. Here is the very lightweight solution I use myself.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | package no.martinjacobsen.utils { import flash.external.ExternalInterface; public class XTrace { public static var enabled:Boolean = true; public function XTrace(){ /*...*/ } public static function log(...args:*) : void { if(enabled == true) { if(ExternalInterface.available){ trace("ExternalInterface is available") for (var i:uint = 0; i< args.length; i++){ ExternalInterface.call("console.log", args[i]); trace(args[i]); } } else { trace("ExternalInterface is not available") for (var j:uint = 0; j< args.length; j++){ trace(args[j]); } } } else { trace("Set 'XTRace.enabled = true;' to enable traces."); } } } } |
As you see this class simply checks whether ExternalInterface is available, and if so traces the output to the console. If ExternalInterface is not available the statement will just be traced. As a bonus you can also set
1 | XTrace.enabled = false |
to disable all traces if you don’t want to go through your code to remove traces, or go into the publish settings to strip them out.
Usage is extremely simplistic:
1 2 3 4 5 | import no.martinjacobsen.utils.XTrace; XTrace.log("Hello World", 42, false, myObject); XTrace.enabled = false; //Disable all traces |