我的问题很简单,但我在网上找不到任何答案,也许这是不可能的......
问题是我有一个ActionScript 3.0应用程序,并希望包含一个小的单行大小的文本框,它显示了所有trace()调用等,它们显示在控制台中。
有没有人知道怎么做?我真的很感激,因为我有一个完整的项目,上面有我要展示的痕迹,现在我正在完成,我意识到我不知道该怎么做:P
当然并不是所有东西都丢失了,因为我可以自己创建一个显示消息的类,但是它更干净,更快,不必替换我的新类和方法的所有trace()调用。
提前问候并表示感谢:)
答案 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('