デバイスによって処理を変えるのは、出来るだけ「コードでデバイスの判定[1]」の方法で同一コードで分岐させた方が良い。
とはいえ、ANEを利用する場合など、それが無理ならパブリッシュの設定で実際に書き出されるコードを切り替えることが出来る。
パブリッシュ設定からプロファイルの横の歯車アイコンで、プロファイルを必要なデバイスの数だけ複製して名前をつける。 たとえば「iOS」「Android」「Web」などである。
それぞれターゲットを「Air for iOS」「Air for Android」「Flash Player」などにしておくと今後プロファイルを切り替えるだけでターゲットやその他の設定が切り替えられる
つぎに「AcrionScript[3] 3.0の詳細設定」で条件付きコンパイル定数を定義する。 たとえば、
CONFIG::NJF_ANDROID true CONFIG::NJF_WEB false
と定義したとする。
こうすると、スクリプトで
CONFIG::NJF_WEB { trace("web!"); } CONFIG::NJF_ANDROID { trace("android!"); }
と書くと、「android!」と出力される。「trace("web!")」の方はパブリッシュされたswfから完全に取り除かれている。 つまりC系言語のマクロのような物である。
この方法で作成したプロファイル毎に条件付きコンパイル定数を定義すれば、各デバイス毎に処理を変えることが出来る。
条件付きコンパイル定数によるブロックはかなり自由に設定でき、括弧を省略すると直後の定義に対して適用される。たとえば以下のように書く事も出来る。
CONFIG::NJF_WEB public function test():void{ trace("web!"); } CONFIG::NJF_ANDROID public function test():void{ trace("android!"); }
上と同じ設定の下では、test関数の実行結果は「android!」である。
(This host) = https://njf.jp