CairngormApplicationクラス解説

まずはソース

import com.iterationtwo.cairngorm.control.*;
import mx.utils.Delegate;

class com.iterationtwo.cairngorm.application.CairngormApplication extends mx.core.Application
{
  public var controller;

  private function init() : Void
  {
    super.init();

    addEventListener( "initialize",  Delegate.create( this, cairngormInit ) );
    addEventListener( "creationComplete",  Delegate.create( this, checkCairngormApplicationIntegrity ) );
  }

  private function cairngormInit() : Void
  {
    if ( controller == undefined )
      throw new Error( "No controller was provided to CairngormApplication" );

    new controller();
  }

  private function checkCairngormApplicationIntegrity()
  {
    var controllerExists:Boolean = ( this.controller != null );

    if ( !controllerExists )
      throw new Error( "No controller has been created" );
  }
}

そして解説
クラス宣言

import com.iterationtwo.cairngorm.control.*;
import mx.utils.Delegate;

ActionScript2.0のインポート宣言はJavaと同じ
ActionScript2.0のクラス宣言はパッケージ宣言を含んでいる。
ActionScript2.0の継承はJavaと同じ。
Applicationタグを継承しているので、Flexアプリケーションのルートタグとして指定ができる。
フィールド宣言

public var controller;

var型はJavaScript系言語の特徴で、「何でもアリ型」。型縛りが弱いのがJavaエンジニアには気持ち悪く見える。
アクセス修飾子publicはJavaと同じ。
フィールドcontrollerは、DIとしてApplicationタグ内の子要素として指定することができる。Flexはココがすごいイイ!!以下、利用例



   
       { com.iterationtwo.demo.control.DemoControl }
   


initメソッド
mx.core.Applicationクラスのスーパクラスであるmx.containers.Containerの初期化メソッド。オーバライドした場合には、super.init()を呼ばないといけない。実際呼び出した後に、Cairngorm独自の初期化処理を追加している。
イベント処理

addEventListener( "initialize",  Delegate.create( this, cairngormInit ) );
addEventListener( "creationComplete",  Delegate.create( this, checkCairngormApplicationIntegrity ) );

イベントリスナーの登録を行っている。Applicationクラスのinitializeメソッドが呼ばれた際に、連動してcairngormInitメソッドを呼び出す。
ApplicationクラスのcreationCompleteメソッドが呼ばれた際に、連動してcheckCairngormApplicationIntegrityメソッドを呼び出す。
undefined
まだFlashの勉強を始めて日が浅いころ、undefinedの考え方が分からなかった。undefinedは、フィールド定義自体されていない状態。nullはフィールド定義はされているが参照しているオブジェクトが無い状態。
cairngormInitメソッド
controller要素が定義されているかチェックするメソッド。定義されていなければ、エラーをスローする。定義されていれば、controllerクラスをインスタンス化する。
checkCairngormApplicationIntegrityメソッド
controllerが正しくインスタンス化できているかチェックするメソッド。できていなければ、エラーをスローする。