Hola a todos:
He hecho una clase para loggear procesos en AS2 que puede resultar de
inter�s. Est� sin documentar --lo siento, soy as�-- pero no es dif�cil
ver el funcionamiento a partir del c�digo.
Ej:
import as.util.Logger;
Logger.addItem("Esto es item del log");
Logger.addItem("Esto es un item del tipo 'prueba'","prueba");
Logger.addItem("Otro �tem de prueba","prueba");
Logger.traceAll();
/* trace
[main] Esto es item del log
[prueba] Esto es un item del tipo 'prueba'
[prueba] Otro �tem de prueba
*/
Logger.traceLast(5,"prueba");
/* trace
[prueba] Esto es un item del tipo 'prueba'
[prueba] Otro �tem de prueba
*/
Y el c�digo:
--- 8< ----
class as.util.Logger {
static private var $logs,$nameTypes,$outputArray:Array;
static private var $types:Object;
static private var $main:String = "main";
static private var $leftDeco:String = "[";
static private var $rightDeco:String = "]";
static private var $assignType:Number = 0;
static public function addItem(log:String,type:String):Void {
var obj:Object = new Object();
obj.type = $getType(type);
obj.log = log;
$getInstance().push(obj);
}
static public function traceAll(type:String):Void {
$initOutput();
if (type != undefined) var idType:Number = $getType(type);
for (var i=0; i<$getInstance().length; i++) {
if ($isType(i,idType) || idType == undefined) {
$outputArray.push($getOutput(i));
}
}
$output();
}
static public function traceLast(num:Number,type:String):Void {
$initOutput();
if (type != undefined) var idType:Number = $getType(type);
var currentItem:Number = $getInstance().length-1;
var i:Number = 0;
while (i < num && currentItem >= 0) {
if ($isType(currentItem,idType) || idType == undefined) {
$outputArray.push($getOutput(currentItem));
i++;
}
currentItem--;
}
$outputArray.reverse();
$output();
}
static private function $getInstance():Array {
if ($logs == undefined) {
$logs = new Array;
}
return $logs;
}
static private function $initOutput():Void {
$outputArray = new Array();
}
static private function $output() {
for (var i=0; i<$outputArray.length; i++) {
trace($outputArray[i]);
}
}
static private function $getType(type:String):Number {
if ($types == undefined) $types = new Object();
if ($nameTypes == undefined) $nameTypes = new Array();
if ($types[type] == undefined) {
$types[type] = ($assignType++);
$nameTypes.push(type);
}
return $types[type];
}
static private function $getTypeName(index:Number):String {
var tmpType = $nameTypes[$getInstance()[index].type];
if (tmpType == undefined) {
return $formatTypename($main);
}else{
return $formatTypename(tmpType);
}
}
static private function $getMsg(index:Number):String {
return $getInstance()[index].log;
}
static private function $formatTypename(msg:String):String {
return ($leftDeco + msg + $rightDeco);
}
static private function $formatMsg(msg:String):String {
return (msg);
}
static private function $getOutput(index:Number):String {
return $getTypeName(index) + " " + $getMsg(index);
}
static private function $isType(index:Number,typeNum:Number):Boolean {
return ($getInstance()[index].type == typeNum);
}
}
--- 8< ----
<!-------------------------------
Lista ASNativos:
subscripciones/desubscripciones
http://www.sidedev.net/asnativos
-------------------------------->