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

このエントリをはてなブックマークに追加このエントリをはてなブックマークに追加このエントリをdel.icio.usに追加このエントリをLivedoor Clipに追加このエントリをLivedoor Clipに追加このエントリをYahoo!ブックマークに追加このエントリをFC2ブックマークに追加このエントリをNifty Clipに追加このエントリをPOOKMARK. Airlinesに追加このエントリをBuzzurl(バザール)に追加このエントリをBuzzurl(バザール)に追加このエントリをChoixに追加このエントリをnewsingに追加このエントリをkwoutに追加
2008年5月20日 火曜日2:34:19

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

RPGツクール VX
定価:¥ 10,290
発売日:2007-12-27
ASIN : B000WN7NUK
JAN コード : 4541993014149

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

キャラチップの規格

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

CharacterWalkerのクラス階層

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

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

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

/**
 * RPGツクールXP用のキャラクターチップを歩かせる
 * @param    character    RPGツクールXP用のキャラクターチップ画像
 * @param    speed        アニメーション速度
 */

public function CharacterWalkerXP(character:BitmapData , speed:uint = 500)
{
    super(character, [0, 1, 2, 3], 4, 0, 1, 2, 3, speed);
}

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

トラックバック URL :

コメントをどうぞ

HTML convert time: 1.552 sec.