2011年1月6日木曜日

FLEXのMain.mxmlはどのように実行されるのか

まぁいわゆるMXMLというやつ。
これをコンパイルするとどうなるかというと、いったんActionScriptになるようですよね。
ということで、プロジェクト-プロパティでFLEXコンパイラの追加引数に【-keep】を追加。
さらに、ボタンをひとつ配置して、クリックイベントとだけ追加して、コンパイル。
MXMLとしては、こんな感じになる
  1. <fx:Script>  
  2.   <![CDATA[  
  3.    protected function BTNID_clickHandler(event:MouseEvent):void  
  4.    {  
  5.     // TODO Auto-generated method stub  
  6.    }  
  7.   
  8.   ]]>  
  9.  </fx:Script>  
変換されると、こんな感じ
  1. public class Main  
  2.     extends spark.components.Application  
  3. {  
  4. ……略……  
  5. protected function BTNID_clickHandler(event:MouseEvent):void  
  6. {  
  7.  // TODO Auto-generated method stub  
  8. }  
  9. ……略……  
ということで、Main.mxmlというのが、Mainクラスになって、<fx:Script>の中が、そのままMainクラスになるという単純な構造のようだ。
ということで、最下層でいろいろやりたければ、

  1. <fx:Script>  
  2.   <![CDATA[  
  3.    var aaa:Number = 0;  
  4.    public function test():void  
  5.    {  
  6.     var d:Date = new Date();  
  7.     var s:String = d.toTimeString();  
  8.     trace(s);  
  9.     trace(aaa++);  
  10.    }  
  11.   
  12.    protected function BTNID_clickHandler(event:MouseEvent):void  
  13.    {  
  14.     test();// TODO Auto-generated method stub  
  15.    }  
  16.   
  17.   ]]>  
  18.  </fx:Script>  
なんて、適当なことをかいても、無事に、
  1. public class Main  
  2.     extends spark.components.Application  
  3. {  
  4. ……略……  
  5.  var aaa:Number = 0;  
  6.    public function test():void  
  7.    {  
  8.     var d:Date = new Date();  
  9.     var s:String = d.toTimeString();  
  10.     trace(s);  
  11.     trace(aaa++);  
  12.    }  
  13.   
  14.    protected function BTNID_clickHandler(event:MouseEvent):void  
  15.    {  
  16.     test();// TODO Auto-generated method stub  
  17.    }  
という風に変換されます。
ということで、あとは、【creationComplete】や【initialize】あたりに初期設定をいれてあれこれいじくりまわせばそれでOKってことですね。
うんそっか。簡単な話でしたね。

0 件のコメント:

コメントを投稿