でコードビハインドのやり方メモ

詰め込みすぎだが気にしない。
まずMyApplication1とExampleMXMLとをみる。System.Web.UI.Pageを継承したMyPage1クラスを記述したMyPage1.aspx.csと、@PAGEディレクティブにInherits="MyPage1" Src="MyPage1.aspx.cs"と書いたExample.aspxみたいなもんだな。うん。
mxmlとasのクラスを関連付ける肝はMyApplication1.hoge()関数の一行目だ。イベントと関数の割り当てはタグに書いてもいいし、addEventListener()してもいい。あとは自分でコード見る。


次にMyApplication2だ。これはタグでインスタンス化し、それを参照する変数名をmyApp2としている。こちらのmxmlとasの関連付けはMyApplication2.asのfuga()関数にある。やっていることは同じだが引数の形式をMyApplication1と変えてある。関数呼び出しはExampleMXML.mxmlの3つ目のボタンを見ること。


ExampleMXML.mxml

<?xml version="1.0"?>
<MyApplication1
    xmlns:mx="http://www.adobe.com/2006/mxml"
    xmlns="*"
    layout="vertical"
    creationComplete="{myApp2.fuga(this);}">
    
    <MyApplication2 id="myApp2" />
    
    <mx:Button label="1" click="button1_Click(event)" />
    <mx:Button label="2" id="button2" />
    <mx:Button label="3" click="{myApp2.button3_Click(event);}" />
    
    <mx:Label id="exampleLabel" />
    
</MyApplication1>

MyApplication1.as

package  {
    import flash.events.Event;
    import flash.events.MouseEvent;
    import mx.controls.Label;
    import mx.core.Application;
    import mx.events.FlexEvent;
    
    public class MyApplication1 extends Application {
        
        private var viewComponent:ExampleMXML;
        private var label1:Label;
        
        public function MyApplication1() {
            super();
            addEventListener(FlexEvent.CREATION_COMPLETE, hoge, false, 0, true);
        }
        public function hoge(e:Event):void {
            viewComponent = e.currentTarget as ExampleMXML;
            label1 = viewComponent.exampleLabel;
            viewComponent.button2.addEventListener(MouseEvent.CLICK, button2_Click, false, 0, true);
        }
        public function button1_Click(e:Event):void {
            label1.text = "MyApp < 1 > " + (new Date).toString();
        }
        public function button2_Click(e:Event):void {
            label1.text = "MyApp < 1 > button2 Clicked!";
        }
    }
}

MyApplication2.as

package  {
    import flash.events.Event;
    
    public class MyApplication2 {
        
        private var viewComponent:Object;
        
        public function fuga(fugafuga:Object):void {
            viewComponent = fugafuga;
        }
        public function button3_Click(e:Event):void {
            viewComponent.exampleLabel.text = "MyApp < 2 > button3 Clicked!";
        }
    }
}