Условная компиляция в actionscript

Как известно, actionscript весьма кривоват и не балует даже препроцессором. Тем не менее, в нем откопалась возможность условной компиляции. Понятно, что через одно место.

При компиляции, в mxmlc можно указывать константы:

mxmlc -define=CONFIG::debugging,true -define=CONFIG::release,false MyApp.mxml

а в коде надо нарисовать слудующую ужасную конструкцию:

package  {
    import mx.controls.Button;
 
    CONFIG::debugging
    public class MyButton extends Button {
        public function MyButton() {
            super();
            // Set the label text to blue.
            setStyle("color", 0x0000FF);
        }
    }
 
    CONFIG::release
    public class MyButton extends Button {
        public function MyButton() {
            super();
            // Set the label text to red.
            setStyle("color", 0xFF0000);
        }
    }
}

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

Из сравнительно полезного, можно в константы вбивать выражения (полезно, т.к. нет #ifndef), типа:

-define+=CONFIG::release,false -define+=CONFIG::debug,"!CONFIG::release"

во FlashDevelop для этих констант компилятора есть менюшка, так что сравнительно легко их указывать. Но синтаксис, конечно, ужасающий.

Хотите больше инфы? Гуглите и вот

Leave a Reply