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
-------------------------------->

Responder a