2011-09-27 18 views
2

我創建調試/日誌效用函數,這是我通過導入類和調用AS3調用帶出「新」全局函數或者具有靜態方法

new Log(params);

或者我訪問改變功能爲靜態的,其重命名爲It

那麼我可以通過Log.It(params)

我不知道叫它如果有可能設定,讓我可以簡單地撥打Log(params)類似於trace命令?

功能:

package 
{ 
public class Log 
{ 
    /** Gets the name of the function which is calling */ 
    public function Log(prefix:String = "", suffix:String = "", params:* = null):void 
    { 
     var error:Error = new Error(); 
     var stackTrace:String = error.getStackTrace();  // entire stack trace 
     var startIndex:int = stackTrace.indexOf("at ", stackTrace.indexOf("at ") + 1); //start of second line 
     var endIndex:int = stackTrace.indexOf("()", startIndex); // end of function name 

     var lastLine:String = stackTrace.substring(startIndex + 3, endIndex); 
     var functionSeperatorIndex:int = lastLine.indexOf('/'); 
     var ClassSeperatorIndex:int = lastLine.indexOf(':'); 

     var objectName:String = lastLine.substring(ClassSeperatorIndex+2, functionSeperatorIndex); 
     var functionName:String = lastLine.substring(functionSeperatorIndex + 1, lastLine.length); 

     //TODO: Loop through params 

     trace(prefix +" " + "[" + objectName + "]" + " > " + functionName + " " + suffix); 

     //TODO: Log to Array 
     //TODO: Dispatch Event 
    } 
} 
} 

回答

7

您可以創建包級別的方法(我不知道這是正確的說法),這裏有一個例子:

concat.as

package com.example.utils 
{ 
    public function concat(string1:String, string2:String):String 
    { 
     return string1.concat(string2); 

    }// end function 

}// end package 

Main.as(document class):

package 
{ 
    import com.example.utils.*; 
    import flash.display.Sprite; 
    import flash.events.Event; 

    public class Main extends Sprite 
    { 
     public function Main():void 
     { 
      if (stage) init(); 
      else addEventListener(Event.ADDED_TO_STAGE, init); 

     }// end function 

     private function init(e:Event = null):void 
     { 
      removeEventListener(Event.ADDED_TO_STAGE, init); 

      var string1:String = "Hello"; 
      var string2:String = "World"; 
      var string3:String = concat(string1, string2); 

      trace(string3); // output: HelloWorld 

     }// end function 

    }// end class 

}// end package 
+0

謝謝,那正是我想要做的。 – davivid

相關問題