2011-06-11 99 views
0

我的問題很簡單,但我找不到它的任何答覆中網,也許這是不可能做到的......在實際的GUI顯示的ActionScript控制檯輸出

的事情是,我有一個ActionScript 3.0應用程序,並且希望包含一個顯示所有trace()調用等的單行大小文本框,這些都顯示在控制檯中。

有沒有人知道它是如何做到的?我真的很感激它,因爲我有一個完整的項目,其中有我想要展示的痕跡,而現在當我完成後,我意識到我不知道該怎麼做:P

當然,並不是所有的東西都丟失了,因爲我可以做我自己的類,它顯示了那裏的消息,但它會更乾淨,而且不必爲我的新類和方法取代所有trace()調用。

此致敬意:)

回答

0

我剛剛在上週做了這個。

有Flex的日誌框架。但令人遺憾的是,Flex的日誌記錄只能在調試模式下工作。如果您搜索SO進行Flex記錄,您會發現各種建議。他們都不是很棒,海事組織。

最後,我通過創建一個帶有靜態函數的Log類來實現自己的功能,該函數充當trace的代理。

喜歡的東西:

public static myTrace(... args) : void { ... } 

然後你只需向前參數傳遞給trace也給你想要的任何其他目的(如字符串+日期數組),然後可以在日誌窗口中顯示。

順便提一下,我還使用SwfAddress來觸發日誌窗口,只要某個參數添加到URL中。非常便利。

哦,到底是什麼......這是班級。它只保留最後100個字符串,並且還有一個「轉儲」功能,如果要將數據發送到服務器或只是快速打印整個歷史記錄,則可以調用該功能。

public class Log 
{ 
    public static var lines : ArrayList = new ArrayList(); 
    public static const MAX_LINES : int = 100; 

    private static function logLine(line : String) : void 
    { 
     while (lines.length > MAX_LINES) 
      lines.removeItemAt(0); 
     lines.addItem({"line" : line, "time" : new Date()}); 
    } 

    public static function logDump() : String 
    { 
     var ret : String = ""; 
     for each (var entry : Object in lines.source) 
     { 
      ret = (entry.time as Date).toUTCString() + " " + entry.line + "\n" + ret; 
     } 
     return ret; 
    } 

    public static function debug(...args) : void 
    { 
     trace(args); 

     var line : String = ""; 
     for (var i : int = 0; i < args.length; i++) 
      if (args[i] != null) 
       line += args[i].toString(); 
     logLine(line); 
    } 
} 
+0

HI!感謝您的快速和擴展答案:) 您確認我在想什麼..我需要使用我自己的代理方法。如果可以,我將以您爲例:P 再次感謝! – pepillo 2011-06-11 12:50:36