2014-02-04 1 views
0

Прежде всего, я не говорю о том, является ли игрок отладчиком или нет. (EDIT: это на самом деле связано с отладчиком игрока)Как определить файл SWF, скомпилированный mxmlc, был построен в режиме отладки или выпуска

Я использую mxmlc собрать очень простой SWF-файл с -debug=false:

mac-108:tmp admin$ "/Applications/Adobe Flash Builder 4.7/sdks/4.6.0/bin/mxmlc" +configname flex -debug=true -static-link-runtime-shared-libraries=true Main.as 
Loading configuration file /Applications/Adobe Flash Builder 4.7/sdks/4.6.0/frameworks/flex-config.xml 
/Users/admin/tmp/Main.swf (987 bytes) 
mac-108:tmp admin$ 

Main.as:

package { 
    import flash.display.MovieClip; 
    import flash.text.*; 

    public class Main extends MovieClip { 

     public function Main() { 
      // Reference: http://stackoverflow.com/questions/185477/determine-if-swf-is-in-a-debug-player-or-mode 
      var st:String = new Error().getStackTrace(); 
      var isDebugBuild:Boolean = (st && st.search(/:[0-9]+]$/m) > -1); 
      var my_st:String = "st: " + (st == null ? 'Null' : st); 
      var my_DR:String = isDebugBuild?"Debug":"Release"; 

      var obj:TextField = new TextField(); 
      obj.text = my_st + "\n" + my_DR; 
      this.addChild(obj); 
     } 
    } 
} 

Тогда я откройте Main.swf в браузере Chrome, но я вижу:

st:Null 
Release 

Это настолько странно, что, по-видимому, я установил -debug=true, почему НЕ является популярным методом определения, работает ли swf в работе Debug или Release.

Однако, если я переведу свой код на Flash Builder 4.7, он даст мне вывод Debug (вместо Release).

ответ

2

Оказалось, что когда SWF построен в режиме отладки, чтобы проверить, находится ли он в режиме отладки, Flash Player также должен быть отладчиком с использованием Capabilities.isDebugger.

Смежные вопросы