ここでいう「概要」とは、MXML アプリケーションと ActionScript のアーキテクチャだと解釈していただければと思います。( MXML コンポーネントについては、別途エントリーする予定です)
下記のコードは、Adobe MAX Japan 2007 にて、Adobe の Ted Patrick 氏が紹介していた Best Practice で、AS クラスを MXML アプリケーションのルートタグにするという手段。
個人的には、この手法が一番好きです。
<?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> タグは一切使用しない
などといったルールを設けておくと、クラスベースなコーディングができて、ドキュメントやソース管理が簡潔になり、スッキリするかもしれません。