我想声明性地打开和关闭我的Flex应用程序的记录器,似乎我通常的确定它是否是调试模式的方式有时只能起作用。代码:
isDebugSWF = new Error().getStackTrace().search(/:[0-9]+]$/m) > -1;
你知道更好的方法吗?
编辑: 我在下面发布了答案。
答案 0 :(得分:4)
之前的方法基于很棒的article。其中一条评论表明,在Release中,stacktrace为null,因此我对其进行了适当的修改:
protected function configureLogger() : void
{
if(!isDebugPlayer()|| !isDebugBuild())
{
// stop logging
Logger.hide = true;
}
else
{
// resume logging
Logger.hide = false;
}
}
private function isDebugPlayer() : Boolean
{
return Capabilities.isDebugger;
}
/**
* Returns true if the swf is built in debug mode
**/
private function isDebugBuild() : Boolean
{
var stackTrace:String = new Error().getStackTrace();
if(stackTrace == null || stackTrace.length == 0)
{
//in Release the stackTrace is null
return false;
}
//The code searches for line numbers of errors in StackTrace result.
//Only StackTrace result of a debug SWF file contains line numbers.
return stackTrace.search(/:[0-9]+]$/m) > -1;
}
这样我最终可以根据当前的构建类型配置ThunderBoltAS3 logger。
答案 1 :(得分:3)
flash.system.Capabilities类中的静态属性Capabilities.isDebugger
指定安装的Flash播放器是否为调试版本。它需要Flash Player 9或AIR 1.0作为最低版本。
请记住,调试Flash Player安装程序是公开可用的,并且没有什么能阻止用户安装Flash的调试版本。如果您想要隐藏某些敏感内容,使用conditional compilation将是更好的选择。
答案 2 :(得分:0)
看起来你正在寻找同样的东西,正如另一篇文章所回答的那样。看这里:How can you tell programmatically if a Flex App is running in debug mode?
答案 3 :(得分:0)
我们在项目中使用条件编译: Adobe Documentation