在实际GUI中显示ActionScript控制台输出

时间:2011-06-11 11:42:23

标签: actionscript-3 console

我的问题很简单,但我在网上找不到任何答案,也许这是不可能的......

问题是我有一个ActionScript 3.0应用程序,并希望包含一个小的单行大小的文本框,它显示了所有trace()调用等,它们显示在控制台中。

有没有人知道怎么做?我真的很感激,因为我有一个完整的项目,上面有我要展示的痕迹,现在我正在完成,我意识到我不知道该怎么做:P

当然并不是所有东西都丢失了,因为我可以自己创建一个显示消息的类,但是它更干净,更快,不必替换我的新类和方法的所有trace()调用。

提前问候并表示感谢:)

2 个答案:

答案 0 :(得分:0)

我上周刚刚这样做了。

那里有Flex的日志框架。遗憾的是,Flex的日志记录仅在调试模式下有效。如果您搜索SO以进行Flex日志记录,您会找到各种建议。其中没有一个是惊人的,IMO。

最后,我通过创建一个带有静态函数的Log类来自行编写,该函数充当trace的代理。

类似的东西:

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

然后你只需将args转发到trace,也可以转发到你想要的任何其他目的地(例如字符串数组+日期),然后你可以在日志窗口中显示。

顺便说一句,每当某个参数添加到URL时,我也使用SwfAddress来触发日志窗口。非常方便。

哦,到底是什么......这是班级。它只保留最后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);
    }
}

答案 1 :(得分:0)

或者,您可以使用ASDebugger

http://labs.flexperiments.nl/asdebugger-20-a-real-time-debugger-and-editor/

ASDebugger.debug( 'shallala' );
ASDebugger.debug_prop( variable );

尽量避免使用调试显示对象选项。调试器可能会崩溃复杂的对象(特别是在flex中)

你可以简单地替换'trace('到'ASDebugger.debug('