package com.xaxisadlabs.utils { import flash.globalization.DateTimeFormatter; import flash.external.ExternalInterface; import flash.events.KeyboardEvent; public class Console { public static const TYPE_WARNING:String = "warn"; public static const TYPE_LOG:String = "log"; public static const TYPE_ERROR:String = "error"; public static var msgArchiveArray:Array; public static var isInit:Boolean = true; public static var fLog:XML = public function Console() { // constructor code } public static function register(inst:*):void { inst.addEventListener(KeyboardEvent.KEY_DOWN, Console.handleConsoleKeyEvent); } public static function handleConsoleKeyEvent(keyEvent:KeyboardEvent):void { var modifier:String=""; var keyPressed:String=""; if (keyEvent.ctrlKey) { modifier="Ctrl + "; } else if (keyEvent.altKey) { modifier="Alt + "; } else if (keyEvent.shiftKey) { modifier="Shift + "; } keyPressed=keyEvent.keyCode.toString(); switch(modifier+keyPressed) { case "Shift + 68": Console.dumpLog(); break; } } public static function log(msg:String, msgType:String="log", msgArchive:Boolean=false):void { if(isInit) { msgArchiveArray = new Array(); isInit = false; } var d:Date = new Date(); var dtf:DateTimeFormatter = new DateTimeFormatter("en-US"); dtf.setDateTimePattern("yyyy-MM-dd 'at' hh:mm:ssa"); var formattedMessage = dtf.format(d) + " -> Message=" + msg; trace(msgType.toUpperCase() + ": " + formattedMessage); ExternalInterface.call(fLog, formattedMessage, msgType); if(msgArchive) { msgArchiveArray.push(msgType.toUpperCase() + ": " + formattedMessage); } } public static function dumpLog():void { trace("////////////////////////////// LOG DUMP START //////////////////////////////"); ExternalInterface.call(fLog, "////////////////////////////// LOG DUMP START //////////////////////////////", "log"); for (var i:int = 0; i < msgArchiveArray.length; i++) { trace("//// " + msgArchiveArray[i]); ExternalInterface.call(fLog, "//// " + msgArchiveArray[i], "log"); } ExternalInterface.call(fLog, "////////////////////////////// LOG DUMP END //////////////////////////////", "log"); trace("////////////////////////////// LOG DUMP END //////////////////////////////"); } } }