Определите, находится ли SWF в «отладочном» проигрывателе или режиме - PullRequest
8 голосов
/ 09 октября 2008

Есть ли способ с помощью Flash (CS3 + AS3) определить, работает ли опубликованный SWF-файл в проигрывателе отладки или в режиме отладки Flash?

Мне известно, что Flex предоставляет возможность устанавливать различные цели сборки (выпуск / отладка) и что вы можете использовать что-то вроде CONFIG::debug для #ifdef включения кода в стиле во время компиляции.

Я представляю что-то вроде System.isDebug(), но ничего не могу найти. Я хочу использовать это, потому что в моем приложении есть функция отладки, которую я определенно не хочу быть доступной в производственной среде.

1 Ответ

20 голосов
/ 07 июля 2009

Проверьте этот класс http://blog.another -d-mention.ro /рограммирование / как-идентифицировать во время выполнения-если-swf-is-in-in-debug-or-release-mode-build /

Этот класс предоставляет две соответствующие (и разные) части информации:

  • Был ли SWF собран с ключом -debug (скомпилированы символы отладки)?
  • Является ли Flash player отладчиком (имеет возможность отображать ошибки и т. Д.)?

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();
    }
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...