Выпуск / Отладка конфигураций с Flash + AS3 - PullRequest
7 голосов
/ 28 марта 2009

Недавно я столкнулся с неловкой ситуацией с некоторыми кодами Flash, когда мне пришлось случайно отправлять клиентам сборку, в которой не все мои отладочные флаги и переменные были сброшены. (Он отправлял запросы на отладку вместо сервера выпуска и т. Д.)

Частично это была плохая организация кода с моей стороны; Я решил это.

Однако Flash, похоже, не позволяет устанавливать различные конфигурации сборки, а в настройках компиляции Actionscript размещены различные переключатели, расположенные таким образом, что забывают что-то проверять / снимать (OMG, я забыл отключить поддержку отладчика). !) может случиться так же, как и со мной. В любом случае, я нахожу, что вручную перепрыгнуть между моей версией конфигурации и конфигурацией отладки будет легко облажаться.

Итак, другие разработчики, какие методы вы используете, чтобы безошибочно переключаться между вашей конфигурацией тестирования и конфигурацией сборки, которую вы выдаете своему боссу / клиентам / кому угодно?

Я знаю, что, вероятно, мне следует замедлиться, но я бы предпочел настроить что-то, чтобы я мог просто щелкнуть выключателем. Я просто возвращаюсь во Flash после долгого перерыва (Flash MX + немного 2004 года).

О, и я знаю о бесполезности отключения поддержки отладки и установки паролей для импорта, и все, моя цель - просто не допускать детишек сценария в мой проект. Декомпиляторы бьют все это так .....

В любом случае, спасибо!

Ответы [ 4 ]

9 голосов
/ 28 марта 2009

Если вы используете Flash CS4, вы можете использовать константы конфигурации. Вы найдете их в «Параметры публикации» | «Настройки ActionScript3.0 ...» | «Константы конфигурации»

Если вы добавили DEBUG :: PLAYER, вы можете использовать код, подобный следующему:

config namespace DEBUG;

//... code here ...

DEBUG::PLAYER
{
    trace("Player state here");
}

Теперь вы можете просто переключать константу между истиной и ложью.

5 голосов
/ 28 марта 2009

Я использую класс среды, например:

public class MyEnvironment {
  public static const DEBUG:Boolean = true;
  public static const SERVER:String = 'localhost';
  // More here
}

Импортируйте это в свой основной класс ActionScript и убедитесь, что все ваши вспомогательные функции ссылаются на него. Например, ваши функции отладчика должны запускаться, только если MyEnvironment.DEBUG имеет значение true, а сетевые функции должны отправлять запросы на MyEnvironment.SERVER.

В моей настройке я бы сохранил это как MyEnvironment.as. (Очевидно, что имя класса в реальной жизни было бы другим.) Я бы также сохранил копии как MyEnvironment.as-debug и MyEnvironment.as-release; последний будет иметь разные настройки. Затем, если мне понадобится сборка релиза, мой скрипт сборки скопирует MyEnvironment.as-release в MyEnvironment.as (перезаписывает оригинал) и перекомпилирует. Это загрузит все мои настройки выпуска в мой основной класс ActionScript; напротив, если я запускаю скрипт для отладочной сборки.

3 голосов
/ 28 марта 2009

Хорошей идеей является использование визуальной подсказки, когда вы находитесь в режиме отладки. Когда установлен флаг DEBUG, отобразите TextField с «режимом отладки» и, возможно, номером версии или чем-то подобным в одном из углов экрана.

Когда вы выполняете свои последние тесты перед отправкой клиенту, вы увидите, что забыли отключить режим DEBUG.

Это, безусловно, зависит от того, как вы структурируете свой проект. Как описано в другом ответе, хорошо хранить флаг в «глобальном» классе высокого уровня, доступном для всего приложения.

0 голосов
/ 06 сентября 2009

Я использую флэшвар под названием «TestingEnvironment». При запуске приложения я проверяю в loaderInfo.parameters, чтобы увидеть, установлено ли для него значение «истина» (строковый литерал, а не логическое значение), и если это так, я устанавливаю общедоступную статическую переменную var debugMode для экземпляра глобального класса Environment в значение true. Тогда все мои классы увидят, что мы находимся в тестовой среде, и будем действовать соответственно.

Кроме того, поскольку я использую другой код страницы для встраивания для тестирования и производства, я ожидаю, что flashvar никогда не попадет на встраивание рабочей страницы. И если это так, его просто отключить, перекомпиляция не требуется.

...