这个问题真的很折磨人。。。牺牲了我又一个午餐时间。。。
国外有个筒子,写了一段代码,用了flash.system.Capabilities 里面的 isDebugger。
代码如下。。。。
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
{
return new Error().getStackTrace().search(/:[0-9]+]$/m) > -1;
}
/**
* Returns true if the swf is built in release mode
**/
public static function isReleaseBuild() : Boolean
{
return !isDebugBuild();
}
}
}
好用吗?试试就知道……
我机器的环境是debug的。所以 一直都没问题。
放到测试机的时候出现问题了。
而且,直接影响了,我整个程序的流程。
if (ModeCheck.isReleaseBuild())
{
FullScreenHelper.getInstance().initMenu();
}
timer.addEventListener(TimerEvent.TIMER, changeTabHandler);
timer.start();
我的timer根本不运行了。。。
事实证明。在isReleaseBuild这块,就已经return出去了。
我参阅了isDebugBuild。所以,自己发明了下面一段代码。
- -;声明:管用不管用,不怪我哈。。。
public static function isReleaseBuild() : Boolean
{
var bol:Boolean = false;
//在构造错误时,以字符串形式返回错误的调用堆栈(仅适用于 Flash Player 的调试版和 AIR Debug Launcher (ADL));如果未使用 Flash Player 的调试版或 ADL,则返回 null。
if((new Error().getStackTrace()) == null){
bol = true;
}else{
bol = false;
}
return bol;
}
ok,问题搞定,收工~!