■Step03 ~クラス定義とObject.registerClass()~
ソース.
今回のレイヤー構造を見てみると[classes]フォルダのなかにCounterやPlayer
などのレイヤーがありクラス定義がされている.
そして1つ1つのクラスがライブラリのシンボルに割り当てられていて,MovieClipを
拡張したシンボルとなっている.
つまりMovieClipではなく自分の作成したクラスを割り当ててくれるのが
Object.registerClass()メソッドになる.
(もちろん自作のクラスがMovieClipを継承しているのでMovieClipの機能を含む.)
これでスクリプトを1フレーム目にまとめ(クラスの定義),デザインとの分離ができる.
ちなみに今回はジャンプの回数をカウントアップして表示するTextFieldを
自作のクラスにしてCounterとして定義してある.
ここでコントローラーの実装を見てみよう.
今までグラフィックシンボルとしていたものをMovieClipシンボルとして
カスタムクラス[_global.study.Controller]を割り当ててある.
[classes]->[Controller]
/**
* ゲームのコントローラーとなるクラス.
*
* @author nao seto <setog@graffiti-web.org>
*/
/**
* コンストラクタ.
*
* @return Void
*/
_global.study.Controller = function() {
/**
* ジャンプボタン.
*
* @param MovieClip
*/
this.buttonA_mc;
this._init();
};
/**
* MovieClipを継承.
*/
_global.study.Controller.prototype = new MovieClip();
/**
* 初期化処理.
*
* @return Void
*/
_global.study.Controller.prototype._init = function() {
this.buttonA_mc.onRelease = function() {
_root.mario_mc.jump();
};
};
// シンボルに割り当て
Object.registerClass('controller', _global.study.Controller);
ここでコントローラーのビューとなる部分(ボタンの部分)のViewと
それをコントロールするController役に分けてみることにした.
今回のようなシンプルなものであれば分ける必要もないかもしれないけど
ViewとController役,そしてあればModelとを分けるのがMVCモデルとしてよく知られたクラスの分け方の1つの考え方としてある.
リスト
■Step00 ~序章~
■Step01 ~とにかく実装編~ (ソース)
■Step02 ~自分のことは自分で編~ (ソース)
■Step03 ~クラス定義とObject.registerClass()~ (ソース)
■Step04 ~MVCを意識して~ (ソース)
■Step05 ~Mediatorパターンを取り入れる~ (ソース)
■Step06 ~AS2.0に書き換える~ (ソース)
trackback for this entry URL:
http://blog.graffiti-web.org/mt/mt-tb.cgi/322