Spark ProjectにCharacterWalkerをコミットしてみた。

  • このエントリーをはてなブックマークに追加
  • 0

前回のエントリでGoogle Mapsの真ん中にドラゴンを歩かせてみたが、あの歩行用アニメーション周りのクラス「CharacterWalker」をSpark Projectにコミットしてみた。
どうも画像の規格がいくつかあるらしくてよくわからなかったが、素材サイトを回って、多分こうだろうと言うもの3種類(2000、XP、VX)作ってみた。

RPGツクール VX

RPGツクール VX

定価:¥ 10,584

Amazon価格:¥ 59,796

カテゴリ:CD-ROM

発売日:2007-12-27



まず、発見した3種類の画像規格だが、メモしてみたらこんな感じだと思われる。

キャラチップの規格

見た通り、アニメーション画像の枚数が違ったり、前後左右の向きがバラバラで、何か面倒そうだったので、そこら辺を全部変数化して親クラス「CharacterWalker」に入れ、全ロジックを書いてみた。で、3つの子クラスは親クラスに特定の引数を渡して初期化するという、正に「実装のための継承」を使った。

CharacterWalkerのクラス階層

なので、CharacterWalkerのコンストラクタは引数だらけでとんでもない事になってる。コメントだとこんな感じ。

ActionScript

  1. /**
  2.  * キャラチップからキャラクターが歩くアニメーションを作成
  3.  * @param    character          キャラクター画像
  4.  * @param    animationSequence  歩行時のアニメーションの順番(列番号の配列を指定)
  5.  * @param    animationCount     歩行アニメーションの枚数
  6.  * @param    frontDirection     前向きの絵の行番号
  7.  * @param    leftDirection      左向きの絵の行番号
  8.  * @param    rightDirection     右向きの絵の行番号
  9.  * @param    backDirection      後向きの絵の行番号
  10.  * @param    speed              アニメーション速度
  11.  */

で、子クラスはコンストラクタ引数が本当に必要そうな画像(最初の引数)と速度だけにして、他は設定すると言う形。
例えばこう。
で、他のメソッドは一切無い。子クラスはコンストラクタだけの実装なのだ。

ActionScript

  1. /**
  2.  * RPGツクールXP用のキャラクターチップを歩かせる
  3.  * @param    character    RPGツクールXP用のキャラクターチップ画像
  4.  * @param    speed        アニメーション速度
  5.  */
  6. public function CharacterWalkerXP(character:BitmapData , speed:uint = 500)
  7. {
  8.     super(character, [0, 1, 2, 3], 4, 0, 1, 2, 3, speed);
  9. }

こんな実装はオブジェクト指向として有りなんだろうか?凄く不安だ・・・・。

スポンサーリンク
スポンサーリンク
  • このエントリーをはてなブックマークに追加

フォローする

スポンサーリンク
スポンサーリンク