有没有办法使用Flash(CS3 + AS3)来确定发布的swf是在调试播放器中还是在Flash的调试模式下运行?
我知道Flex提供了设置不同构建目标(发布/调试)的能力,并且您可以在编译时使用CONFIG::debug
之类的内容来#ifdef
样式包含代码。
我想象的是System.isDebug()
但找不到任何东西。我想使用这个,因为我的应用程序中有调试功能,我肯定不希望在生产环境中可用。
答案 0 :(得分:20)
本课程提供两个相关(和不同)的信息:
Capabilities.isDebugger只回答第二个问题 - 是运行Flash Debug播放器的用户。在您的情况下,要在调试版本上对应用程序的部分进行处理,您需要-debug构建检查(然后不要将-debug构建交付到生产中)。
但请注意,这两项检查都是运行时检查。在调试代码周围使用条件编译(也就是CONFIG :: debug)仍然是一个好主意,因为它将确保在最终的SWF中不会传递可能敏感的调试代码,使其尽可能小和安全。
我正在复制引用的代码,以防博客链接出现故障:
package org.adm.runtime
{
import flash.system.Capabilities;
public class ModeCheck
{
/**
* Returns true if the user is running the app on a Debug Flash Player.
* Uses the Capabilities class
**/
public static function isDebugPlayer() : Boolean
{
return Capabilities.isDebugger;
}
/**
* Returns true if the swf is built in debug mode
**/
public static function isDebugBuild() : Boolean
{
var stackTrace:String = new Error().getStackTrace();
return (stackTrace && stackTrace.search(/:[0-9]+]$/m) > -1);
}
/**
* Returns true if the swf is built in release mode
**/
public static function isReleaseBuild() : Boolean
{
return !isDebugBuild();
}
}
}