アーカイブ

MXML Coding Best Practice 概要(候補 1 )

ここでいう「概要」とは、MXML アプリケーションと ActionScript のアーキテクチャだと解釈していただければと思います。( MXML コンポーネントについては、別途エントリーする予定です)

下記のコードは、Adobe MAX Japan 2007 にて、Adobe の Ted Patrick 氏が紹介していた Best Practice で、AS クラスを MXML アプリケーションのルートタグにするという手段。
個人的には、この手法が一番好きです。

MXML Application
<?xml version="1.0" encoding="utf-8"?>
<base:ApplicationBase
    xmlns:base = "lib.*"
    xmlns:mx   = "http://www.adobe.com/2006/mxml">
    <mx:Button id="hogeButton" label="test" />
</base:ApplicationBase>

lib/ApplicationBase.as
package lib
{
    import flash.events.MouseEvent;
    import mx.core.Application;
    import mx.events.FlexEvent;
    /**
     * MXML Application コントロールクラス
     */
    public class ApplicationBase extends Application
    {
        /**
         * MXML Application インスタンス変数
         */
        private var mApplication:MXML Application Name;
        /**
         * ApplicationBase
         * コンストラクタ
         */
        public function ApplicationBase()
        {
            super();
            this.addEventListener(FlexEvent.CREATION_COMPLETE, creationCompleteHandler, false, 0, true);
        }
        /**
         * clickHandler
         * @param event MouseEvent オブジェクト
         * テスト出力
         */
        private function clickHandler(event:MouseEvent):void
        {
            trace("hoge");
        }
        /**
         * creationCompleteHandler
         * @param event FlexEvent オブジェクト
         * 初期化
         */
        private function creationCompleteHandler(event:FlexEvent):void
        {
            mApplication = event.currentTarget as MXML Application Name;
            mApplication.hogeButton.addEventListener(MouseEvent.CLICK, clickHandler, false, 0, true);
        }
    }
}

あと宗教っぽくてアレですが、

  • MXML タグ内でイベント属性は定義しない
  • MXML タグ内でスタイル属性は定義しない
  • <mx:Script> タグは一切使用しない

などといったルールを設けておくと、クラスベースなコーディングができて、ドキュメントやソース管理が簡潔になり、スッキリするかもしれません。