Хотя ответ Патрика соответствует критериям вопроса, он не охватывает все варианты использования. Если вы находитесь в области кода, которая позволяет вам использовать оператор if / else, то это хороший ответ. Но если вы находитесь в месте, где вы не можете, то вам нужно лучшее решение. Например, вы можете захотеть сделать что-то вроде этого, чтобы объявить константу в классе:
private var server:String = "http://localhost/mystagingenvironment";
или для живого релиза:
private var server:String = "http://productionserver.com";
(это пример, и я не защищаю это как производственный код).
Я использую xml config и использую loadConfig + = "myconfig.xml", чтобы выполнить мою конфигурацию вместо передачи большого количества параметров командной строки. Итак, в разделе <compiler>
вашей конфигурации xml:
<define>
<name>CONFIG::debug</name>
<value>false</value>
</define>
<define>
<name>CONFIG::release</name>
<value>!CONFIG::debug</value>
</define>
Это хорошо работает для всех случаев использования:
CONFIG::debug
{
private var server:String = "http://localhost/mystagingenvironment";
}
CONFIG::release
{
private var server:String = "http://productionserver.com";
}
Это дает дополнительное преимущество работы в разных приложениях. Он также не полагается на то, что флаг 'optimize' является истинным, как ответ Патрика (хотя я думаю, что мы можем предположить, что 99,999999% всех SWF-файлов имеют optimize = true, я устанавливаю его в false, когда оптимизатор ломает мой AS3).
У него есть недостаток: он не компилирует все пути кода, только те, которые включены. Поэтому, если вы не используете сервер сборки для создания сборок релиза и сообщаете, когда что-то ломается, будьте готовы к неожиданным ошибкам при сборке релиза («Но он откомпилирован в отладке! Дерьмо, мне нужно запустить его сейчас!» ).