如何解决在实际的GUI中显示ActionScript控制台输出
| 我的问题很简单,但我无法在网上找到任何答案,也许这不可能。 问题是我有一个ActionScript 3.0应用程序,并且想要包括一个单行大小的文本框,该文本框显示了所有trace()调用等,这些都显示在控制台中。 有谁知道如何做到这一点?我真的很感激,因为我有一个完整的项目,上面有我想展示的痕迹,现在我完成时才意识到我不知道如何做到这一点:P 当然,不会丢失所有内容,因为我可以做一个自己的类,向那里显示消息,但是这样会更干净,而且更快捷,不必替换新类和方法的所有trace()调用。 提前致以谢意:)解决方法
我上周刚做过。
那里有用于Flex的日志记录框架。遗憾的是,Flex \的日志记录仅在调试模式下有效。如果在SO中搜索Flex日志记录,则会发现各种建议。海事组织,他们都不是什么了不起。
最后,我通过使用静态函数创建一个Log类来充当
trace
的代理,从而完成了自己的工作。
就像是:
public static myTrace(... args) : void { ... }
然后,您只需将args转发到trace
,还可以转发到您想要在日志窗口中显示的任何其他目标位置(例如字符串和日期的数组)。
顺便说一句,每当向URL添加某个参数时,我也使用used3来触发日志窗口。非常便利。
哦,什么鬼..这是课程。它只保留最后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);
}
}
, 或者,您可以使用ASDebugger
http://labs.flexperiments.nl/asdebugger-20-a-real-time-debugger-and-editor/
ASDebugger.debug( \'shallala\' );
ASDebugger.debug_prop( variable );
尝试避免使用调试显示对象选项。调试器可能使复杂对象崩溃(尤其是在flex中)
您可能可以将\'trace(\'替换为\'ASDebugger.debug(\'
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。