这个问题真的很折磨人。。。牺牲了我又一个午餐时间。。。

国外有个筒子,写了一段代码,用了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,问题搞定,收工~!