Progression を読む その2 - Progression.as コンストラクタ
public function Progression( id:String, stage:Stage = null, rootClass:Class = null )
引数たち
たとえばこんな感じに使う。
prog = new Progression( "index", stage, IndexScene );
で、次にエラー処理3つ。
- 冒頭で定義した定数VERSIONと比較し古いプレーヤーで動いている場合はエラー
- Progression 識別子(id)がすでに登録されていればエラー
- stageが定義されていなければエラー
エラーの送出は jp.nium.core.errors.ErrorMessageConstants クラスを利用している。
idの登録確認には ProgressionCollection クラスの __getInstanceByIdメソッドを使用している。
変数初期化
パッケージ情報を表示した後に、各種変数初期化。
- id
- eventHandlerEnabled を true に
- firstSceneId を取得
- ブラウザのURL(BrowserInterface.locationHref)から senePath を取得
- ブラウザ上でない場所で再生された場合(!BrowserInterface.enabled)は初期値( "/" + id)を使用
表示系を追加
Background を 表示
- _stage.addChildAt( _background, 0 );
一番下になにか配置したい場合は Progression._background.addChild(表示したいなにか); と書けばいいっぽい。- _background は private なクラス変数の為、クラス内からのみ参照可能だから上記のような使用方法はできない。
- 前述したが、_stage や _container は外部から参照する為のセッターが用意されているが、_background はない。
- じゃあ、_background ってなんの為に用意されているんだ??
- Background は CastSprite を継承している
Container を表示
- _stage.addChild( _container );
- Backgroundより上になにかを配置したい場合は progression.container.addChild(表示したいなにか); と書く。
- Container は CastSprite を継承している
SceneManager (調べ中)
KeyboardManager (調べ中)
SyncManager (調べ中)
rootClass 関連
- まず、 rootClass が存在しなければ SceneObject に変換する
rootClass ||= SceneObject;
- rootClass を作成 (インスタンス名 root)
- root が 作成できなかった場合(SceneObject クラスを継承していない場合)はエラーを送出する
- SceneObject のクラス変数 progression_internal::__owner に this を代入する
SceneObject のクラス変数 __owner について
- __owner に Progressionのインスタンスを代入すると _owner にセットされ、SceneObject のコンストラクタで _owner が _progression に代入された後、null が代入される。*1
- SceneObject の _progression は progression で参照できる。
- 要するに、SceneObject 内の progression インスタンス変数経由で“最初に作られた Progressionインスタンス”が参照できる。
ScanManager の root に root を代入する
ProgressionCollectionに登録
- ProgressionCollection の クラス変数 _ids:Dictionary に _id をキーにして this を登録する
- ProgressionCollection の クラス変数 _instances:Dictionary に 登録されたインスタンス数(_numInstances)をキーにして this を登録する
- ProgressionCollection の クラス変数 _nums:Dictionary に this をキーとして登録したインスタンス番号(_numInstances)を登録して、_numInstances++
- ProgressionCollection クラスから CollectionEvent.COLLECTION_UPDATE イベント送出
イベント送出
- SceneEvent.SCENE_ADDED
- SceneEvent.SCENE_ADDED_TO_ROOT
以上、コンストラクタ。
コンストラクタ部分を読んで収穫したもの
一番下になにか配置したい場合は Progression._background.addChild(表示したいなにか); と書けばいいっぽい。- _background は private なクラス変数の為、外部からは参照できない。
- SceneObject 内の progression インスタンス変数経由で“最初に作られた Progressionインスタンス”が参照できる。
つづくかも。
*1:なんで null が代入されるのかは後で調べる