Home > Tags > Flex

Flex

Flexで外部のActionScriptからビュー(View)を参照する

MXMLにscriptタグでActionScriptタグを書いていくとどんどん肥大化していくので、ActionScriptを外部化します。
これによってView(ビュー)とController(コントローラー)を分けることができます。

MXMLから外部ActionScriptを参照する

まずMXMLから外部のActionScriptへの参照を記します。
mx:Applicationタグ内のxmlns:controller=”controller.*”<controller:SampleController id=”SampleController” />がポイントです。
これで外部のActionScriptを利用することができます。

Sample.mxml

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" xmlns:controller="controller.*">

    <controller:SampleController id="SampleController" />

    <mx:Panel title="Sample Application">
        <mx:Button id="button" label="click" />
        <mx:TextInput id="textInput" />
    </mx:Panel>
</mx:Application>

ActionScriptを記述する

このままではActionScriptからビューであるSample.mxmlのコンポーネントの値を利用することができないので、利用できるようにします。
やることは以下です。

  1. IMXMLObjectインタフェースをインプリメントする。
  2. IMXMLObjectインタフェースのinitializedメソッドを実装する。
  3. initializedメソッドの中でビューを利用可能にする。

注意として、initializedメソッドの中で定義したビューは実はまだインスタンス化されていないので、FlexEvent.CREATION_COMPLETEのイベントリスナーを設定し、そのあとに実際にビューにアクセスできるようになります。

SampleController

package controller
{
    import flash.events.MouseEvent;

    import mx.controls.Alert;
    import mx.core.IMXMLObject;
    import mx.events.FlexEvent;

    public class SampleController implements IMXMLObject
    {
        private var view:Sample;

        // IMXMLObjectのinitializedメソッドの実装
        public function initialized(document:Object, id:String):void
        {
            view = document as Sample;
            view.addEventListener(FlexEvent.CREATION_COMPLETE, creationCompleteHandler);
        }

        public function creationCompleteHandler(event:FlexEvent):void
        {
            view.button.addEventListener(MouseEvent.CLICK, buttonClickHandler);
        }

        public function buttonClickHandler(event:MouseEvent):void {
            view.textInput.text = "ok";
        }
    }
}

Home > Tags > Flex

Search
Feeds
Meta

Return to page top