こんにちはtaroです.

Flash Builder, FDT, FlashDevelop(以下、それぞれ、FB, FDT, FDとします.) 等様々な開発環境があるかと思いますが、どの環境でも裏はflex SDKのコンパイラを使ってswfをビルドします.

configファイルを書けば、コンパイラに対して様々なオプションを指定することができます.

FBやFDT, FD等をお使いの方は直接configファイルを書くのでなく、プロジェクトのプロパティの設定画面等でオプションを指定したりすることも可能かと思いますが、どういうオプションがあるのかということを知っておくと役に立つことがあるかもしれません.

ということで、唐突ですが、configファイルに関していくつかまとめてみようと思いました.

まずはちょっとしたサンプルをビルドしてみます.

package {
	import com.adobe.serialization.json.JSON;
	import flash.display.Sprite;
	import flash.display.StageAlign;
	import flash.display.StageScaleMode;
	import flash.text.TextField;
	
	public class main extends Sprite {
		public function main() {
			stage.align = StageAlign.TOP_LEFT;
			stage.scaleMode = StageScaleMode.NO_SCALE;
			
			var tf:TextField = new TextField;
			tf.wordWrap = true;
			tf.width = 400;
			tf.text = JSON.encode(tf);
			tf.height = tf.textHeight + 4;
			addChild(tf);
		}
	}
}

 

上のコードをmain.asとして保存し、Windowsならコマンド・プロンプト, Macならターミナル等から

mxmlc main.as

と打ちます.

ここで「mxmlcがみつからない」というようなメッセージが出る方は、パスを通すなり、flex SDKのmxmlcのパスを直接叩いてみてください. (ローカルに複数のSDKが存在する場合はパスを通さないほうが都合が良いかもしれません.)

コンパイルしてみると、次のようなエラーメッセージが出ます.

main.as(16): col: 14 エラー: 未定義のプロパティ JSON へのアクセスです。

                        tf.text = JSON.encode(tf);
                                  ^

main.as(2): col: 37 エラー: 定義 com.adobe.serialization.json:JSON が見つかりません。

        import com.adobe.serialization.json.JSON;

これはJSONのライブラリが見つからないということです. そこでconfigファイルでJSONライブラリの場所を教えます. 

"クラス名-config.xml"という命名規則に従ってconfigファイルを作ると、flexコンパイラは自動的に設定ファイルとみなし読み込んでくれます.

今回の場合はmain-config.xmlという名前にします.

<flex-config>
    <compiler>
        <library-path>
            <path-element>as3corelib.swc</path-element>
        </library-path>
        <source-path>
            <path-element>.</path-element>
        </source-path>
    </compiler>
</flex-config>

 JSONのライブラリはas3corelibのものを使い、main.asと同階層にas3corelib.swcとして保存しました. 

layout.png

もう一度

mxmlc main.as

としてみてください. 今度はビルドに成功する筈です.

FDのような開発環境からビルドしてみてもflex SDKのコンパイラを呼んでビルドしているだけですので、このconfigファイルの設定は有効となります. (ただし、出力先のswf等の指定はプロジェクトの設定の方が優先されるかもしれません.)

さてconfigをとにかく書いてみることには成功しましたが、オプションをどうやって指定すればいいのか?そのたびにgoogle検索なんかするんだろうか?と思ってしまいます.

これについては、少々ボリュームがありますのでまた次回・・・それでは.

 

HTML5飯