OOPで考えるActionScript Step03





this is flash contents.

■Step03 ~クラス定義とObject.registerClass()~

ソース

 今回のレイヤー構造を見てみると[classes]フォルダのなかにCounterPlayer
などのレイヤーがありクラス定義がされている.
そして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に書き換える~ソース


contributor nao : 2005年10月03日 02:16

trackback

trackback for this entry URL:
http://blog.graffiti-web.org/mt/mt-tb.cgi/322

comment

comment is here.




保存しますか?