Flex3 SDK に付属する asc.jar は単体でも ActionScript コンパイラとして使える。普通使う mxmlc との違いは、abc ファイル(ActionScript バイトコードバイナリ)を生成出来る事と、asc.jar は純粋にコンパイラだけなので、標準ライブラリや Flex が提供するライブラリへのリンクを勝手にしない事だ。asc.jar を使う事で、mxmlc が裏でどのような機能を提供しているかがよく分かる。以下に実際の例を挙げる。
// simple.as package { import flash.display.Sprite; import flash.text.TextField; public class simple extends Sprite { public function simple() { var field : TextField = new TextField(); field.text = "Hello World!"; addChild(field); } } }
このファイルをコンパイルして swf を作成してみる。まず、flash が提供する Sprite や TextField を利用するので、これらのクラスの定義が必要だ。flash.* 以下のクラスは Flash Player 自体が持っているので実装は不要だが、コンパイルを通すために C で言うとヘッダファイルのような宣言を用意する。
// flashglobal.as package flash.display { public class Sprite {}; } package flash.text { public class TextField {} }
このように自分ででっちあげるのが嫌なら、代わりに Alchemy に含まれる playerglobal.abc を使ってもよい。
クラスの定義には、Object クラスの定義が必要だ。しかし Object 自身を ActionScript で定義出来ないので、Tamarin か Alchemy に含まれるライブラリを利用する。Tamarin では core/builtin.abc Alchemy では flashlibs/globals.abc という名前なのでコピーして使う。
ここまで準備が整ったら以下のコマンドラインでコンパイルと swf の生成を行う。
$ java -jar ~/src/flex_sdk_3/lib/asc.jar -import builtin.abc flashglobal.as $ java -jar ~/src/flex_sdk_3/lib/asc.jar -swf simple,100,100 -import builtin.abc -import flashglobal.abc simple.as
と、役に立たない情報ですが、後で忘れると嫌なのでメモしました。