「プログラマ」が把握しにくいんぢゃないかと思うあたりを、プログラマチックな用語でmemo。
まず。
基本、GUIの部品を、XMLフォーマットで.mxmlファイルに。
プログラムは基本、別ファイルにして.asファイルに。言語はActionScript。以下「プログラム」と呼称。
プログラムはmxmlファイルに書いても良いけど…分離した方がいいよねぇ?
分離しない場合、
<mx:Script><![CDATA[ ]]></mx:Script>
と記述する。
後でもう一度書くが。この書式の場合、先頭にある「mx:Application」インスタンス内のメソッドとして扱われる。
trace( Object );
でデバッグ表示ができる。
import mx.controls.Alert; -中略- Alert.show("test");
もお好み。
んで。
XMLフォーマットの場合。えと…例えばラベルであれば
<mx:Label id="ttt" fontWeight="bold" fontSize="24"/>
とかって書くのですが。まず mx:Label が、いわゆるclass名。
んで…idのアトリビュート値がぢつは「インスタンスが格納される変数名」。XMLで書いたら、にゅるりとnewされるらしい。
つまり
mx:Label ttt = new mx:Label;
と一緒ってことらしい。
ここ試験に出るから覚えといて!!
で。いわゆるVBox、HBoxという「水平/垂直コンテナ」があるですが(この辺はどこのGUIでもあるよね)。
このコンテナにアイテムをプログラム的にぶち込む場合
VBoxインスタンス.addChild( ぶち込みたいインスタンス );
でいけるっぽ。
<?xml version="1.0" encoding="utf-8"?> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" applicationComplete="onComplete()"> <!-- *********************************** --> <mx:Script><![CDATA[ import mx.controls.Label; private function onComplete():void{ var t:Label = new Label; t.text = 'text 1'; vvv.addChild(t); var t2:Label = new Label; t2.text = 'text 2'; vvv.addChild(t2); } ]]></mx:Script> <!-- *********************************** --> <mx:VBox id="vvv"> </mx:VBox> </mx:Application>
つぎ。
外部ファイルに持ち出すのは…案外に簡単っぽ。
<mx:Script source="base.as" />
または
<mx:Script><![CDATA[ include "base.as"; ]]></mx:Script>
のどっちか。
ちなみにこれも、しっかりと mx:Application のインスタンス内のメソッドとして認識するっぽ。
ディレクトリ位置は「記述しているmxmlのファイルの場所を基準」にした相対パス。絶対でもイイらしいけどンなもん書く気なし。
多分。一端、main.asとかってのを作って。全部そっちの中でごにょごにょするのがよろしかんべと思われる。
おまけ。やるつもりはないけど「mxmlのタグの中にActionScriptをインラインで書く」やり方が、あるにはある。
やりたきゃ調べて(笑
ちゅぎ。
Flash、特にFlexは「イベントドリブンである」が前提。ここはよいね?
なので「イベントが発生した時にこの関数をcallしてほしい」的登録をする必要があるのだけど。
関数(っつかメソッド)はプログラムでいくんだけど、登録自体はmxmlで行う。
んと…こげなかんじ。
<mx:Button label="送信" left="0" click="buttonClickHandler(event)" />
典型的なボタンイベント。
この場合、clickというイベントが発生した場合に、buttonClickHandlerという定義された関数をcallする、って設定。
よく「コールバック」とかって言い方をするけど、Flashの世界観では「イベントリスナー」「イベントハンドラー」とか言うらしい。
いったんここまで。