がるの健忘録 このページをアンテナに追加 RSSフィード

2009-06-02

[]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の世界観では「イベントリスナー」「イベントハンドラー」とか言うらしい。


いったんここまで。