gallu’s blog

エンジニアでゲーマーで講師で占い師なおいちゃんのブログです。

Flex memo

プログラマ」が把握しにくいんぢゃないかと思うあたりを、プログラマチックな用語で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の世界観では「イベントリスナー」「イベントハンドラー」とか言うらしい。


いったんここまで。