アーカイブ : 2012年 12月

as3 条件付きコンパイル定数

少し前までこの便利な機能を知りませんでした。。

たとえばFlashでアプリをつくっているとデバイスごとに同じ関数でも処理を変えたい場合があります。

またデバッグ時だけデバッグ用のコンソールやSTATSを表示させたいなど処理を分岐させたい場合に条件付きコンパイル定数が便利です。

Flashでの設定の方法

ここでは例えばAndroidとiOSで処理を分岐させたいと仮定してその方法を解説しています。

・メニュー「ファイル」>「ActionScriptの設定」を開き、「条件付きコンパイル定数」タブをひらきます。

タブ内の「+」ボタンをおして定数を追加します。

ここではとりあえずネームスペースを「PLATFORM」にして定数をANDROIDとIOSの2つをつくります。

・次に分岐処理させたいコードを書きます。

PLATFORM::ANDROID
function Mytest():void{
	trace("これはandroidだけの処理");
}

PLATFORM::IOS
function Mytest():void{
	trace("これはiosだけの処理");
}

Mytest();

見慣れない書式がまじっていますが、これがコンパイラ定数でネームスペース::定数で記述します。

この定数の直後に関数クラス定義を記述することができます。
先ほどの「Actionscript設定」画面で定数の値をtrueに設定したものだけがコンパイルされ、falseのものは無視されます。

なので上の例の場合だとPLATFORM::ANDROIDがtrueになっているので

trace(“これはandroidだけの処理”);

だけがコンパイルされ実行されます。

 

参考

上条さんのブログ http://cuaoar.jp/2010/10/actionscript-30.html

FlashDevelopの場合の設定 http://hkpr.info/flash/game/sample/s089.php