在导出发布版本时,从Flash构建器调试时工作的东西是否有可能有所不同?
例如,我有这个:
private function getErrorText(error:Error):String{
var result:String = "";
result = "FehlerArt: " + error.name + "//" + (error.message as String).substring(0, (error.message as String).indexOf(":")) + "\n";
result += "Fehler: " + (error.message as String).substring((error.message as String).indexOf(":") + 1) + "\n";
result += "Komponente: " + getComponentID();
return result;
}
当我使用调试器im Flash构建器执行此操作时,我得到正确的字符串:
FehlerArt: ReferenceError//Error #1065
Fehler: Variable mistake is not defined.
Komponente: button1
但是如果我使用导出的版本构建做同样的事情,我得到这个:
FehlerArt: ReferenceError//
Fehler: Error #1065
Komponente: button1
因此,在执行发布版本时,看起来Error类中的消息的格式不同,还有其他示例。
那么我是否需要设置一些配置来使发布执行与调试执行相同?
更新
虽然divillysausages的解决方案有效,但它不会显示具体信息,例如,如果存在“未定义的变量错误”,则会说“变量/ n未定义”,如果代码很大,则对用户来说将是一个问题。那么有没有办法将应用程序导出为调试版本?
我尝试将其导出为发布版本,然后使用我的bin-debug目录中的SWF替换安装目录中的SWF,并且应用程序正常工作,但如果发生错误,它仍然不会显示有关错误的所有信息
答案 0 :(得分:2)
这是预期的行为 - 您在调试模式下获得的消息已完全充实,因为所有调试符号都可用。在发布时,它们因速度原因被删除。
您可以在这里查看有关Error的文档:http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/Error.html但它几乎指定它的主要用途是处于调试模式(完整消息,错误对话框,完整堆栈跟踪等)。
通常,在这种情况下,您要做的是捕获错误,然后使用您拥有的任何日志记录系统记录消息。这样您就可以根据您的确切需求自定义消息。您可以在此处查看所有运行时错误ID:http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/runtimeErrors.html
<强>更新强>
我编写了一个类来擦除上面的链接以动态显示运行时错误,因此您不需要为每个链接写出自定义消息。你可以在这里得到它:http://divillysausages.com/blog/making_sense_of_as3_runtime_errors_at_runtime
还包含在包含所有当前错误的XML文件中(截至今天)