Flash 创建调试类

Flash 创建调试类,flash,actionscript-3,debugging,flash-builder,Flash,Actionscript 3,Debugging,Flash Builder,我在一些项目中看到ppl有自己的“调试类” 因此,您可以键入Debug.trace(“看看这个!”),而不是键入:trace(“看看这个!”) 我看到的唯一一个advantaje是,您可以使用调试类中的单个参数禁用每个跟踪调用。。但是,仅此而已 我的问题是,如果在AS3中使用调试类,我可以获得什么好处?调试类允许您执行不同级别的操作(注意、警告、错误、严重、启示等)。正如您所提到的,您可以在单个位置禁用。您可以为消息添加时间戳。您可以将输出发送到不同的位置,这对于调试实时应用程序或调试不经常发生

我在一些项目中看到ppl有自己的“调试类”

因此,您可以键入Debug.trace(“看看这个!”),而不是键入:trace(“看看这个!”)

我看到的唯一一个advantaje是,您可以使用调试类中的单个参数禁用每个跟踪调用。。但是,仅此而已


我的问题是,如果在AS3中使用调试类,我可以获得什么好处?

调试类允许您执行不同级别的操作(注意、警告、错误、严重、启示等)。正如您所提到的,您可以在单个位置禁用。您可以为消息添加时间戳。您可以将输出发送到不同的位置,这对于调试实时应用程序或调试不经常发生的事情非常方便。您还可以使用一些逻辑来检测参数类型,并对调试信息执行不同的操作。

我实际上并没有以这种方式使用调试类。我有一个日志框架,这就是日志的用途。我的调试类有如下内容

// I usually use these for debugging and it avoids the need of an 
// additional import.
function whatIs( obj:* ):String{ return getQualifiedClassName( obj )}
function describe( obj:* ):XML{ return describeType( obj ); }
我还有一个getLines方法——它返回长字符串,这样我就可以轻松地查看日志记录跟踪并查看特定点

但最重要的是:

function getStack():String {
    try
    {
        throw new Error( "Someone set us up the bomb!" );
    }
    catch( e:Error )
    {
         return e.getStackTrace();
    }
}

我甚至在getStack周围有一个包装器,它返回在调用getStack()的方法之前最近调用的类和方法。

+1关于“可以将输出发送到不同的地方”。@Artemix,你怎么知道Debug.trace唯一做的事就是调用trace()?可能它也使用本地连接或外部接口,并将输出编组到自定义AIR应用程序或将数据发送到服务器。事实上,开发人员将trace()调用滚动到混合中可能只是为了方便进行ctrl+Enter风格的本地测试,但真正的黄金可能是在flash输出控制台之外进行日志记录的潜力。在这种情况下,它仅用于此目的,但我认为有一种称为“track”的方法或者诸如此类的东西。在发行版播放器中有跟踪/调试语句也很棒。当它们都经过调试类时,您可以存储它们,然后在“输出”文本字段中显示它们。因此,如果您的发布版本出现问题,您仍然有debug infoOh,这一次,在AS2中,我在AS2中构建了一个命令行--我有一个调试器,而不需要使用debug类。