どうやってやるのか前々から気になってたので調べてみました。
mtascの公式サイトに出てたのですが、結果として標準Flash IDEが必要な模様。mtasc単体で完結できないみたいなので残念。ってちょっと考えたら当たり前か。。
まずはエディタを開いて以下のようなasファイルを用意。
import mx.controls.Button; class mxTest{ function mxTest(mc:MovieClip){ mc.createClassObject(Button,"btnTest",1,{ label:"テスト", _width:100, _height:25, _x:30, _y:30 }); } }
次にFlashI DEからtest.flaを作成1フレーム目に
m = new mxTest(this); this.stop();
と、記述し、ライブラリに ボタン・コンポーネントを追加。パブリッシュ。
% mtasc -cp (クラスパス※) -mx -swf test.swf mxTest.as
※うちの環境は以下の通りでした。
/Applications/Macromedia Flash MX 2004/First Run/Classes/
で、できたtest.swfがmxtest.asを反映された物。
あとは、myTest.asを書き直す事でswfに反映させる事ができる。
次のコードはボタンを押した後、アラートウィンドウを表示させるようにしたもの。flaファイルのライブラリにAlertコンポーネントを追加してパブリッシュする必要がある。
import mx.controls.Button; import mx.controls.Alert; import mx.utils.Delegate; class mxTest{ function mxTest(mc:MovieClip){ mc.createClassObject(Button,"btnTest",1,{ label:"テスト", _width:100, _height:25, _x:30, _y:30 }); mc.btnTest.addEventListener("click", Delegate.create(this, btn_onClick)); } function btn_onClick(eventObj:Object) { Alert.show("you "+eventObj.type+"ed "+eventObj.target,"title"); } }
% mtasc -cp (クラスパス※) -mx -swf test.swf mxTest.as
うーむ。めんどい。