動くグリッド by tweener (5)
2007/05/07 22:10 - tweener
前回は、MotionEngine.as のモーション開始前の状態を定義する部分を、オブジェクト指向っぽい形に書き直しました。
今回は、さらにオブジェクト指向っぽくするために、その部分を別のクラスファイルとして独立させてみます。
前回、各セルオブジェクトのモーション開始前の状態は関数で定義するようにし、その関数は配列に順次格納する手段をとりました。
下記のような感じで、名無しの関数をダイレクトに配列に格納しています。
<前回の MotionEngien.as> 配列[0] = function() { セルオブジェクトのプロパティ設定 } 配列[1] = function() { セルオブジェクトのプロパティ設定 } ……
今回の改造でも、関数を配列に格納するアルゴリズムを踏襲しますが、モーション前状態の関数を_00、_01、_02……という名前付きの関数とし、配列格納部分(init)と分離します。
クラスファイル名は StageDefine.as としました。
<今回の StageDefine.as> private static function init():void { // 配列生成 function_array = new Array(); // 配列に関数を格納 function_array[0] = _00; function_array[1] = _01; …… } // モーション開始前の状態を定義する関数 public static function _00( …… ):void { …… } public static function _01( …… ):void { …… } ……
こんな感じですね。
関数の名前が _00、_01 だなんて、かなりダサダサですが、tweener の Equations.as のように、モーション開始前状態の定義関数をその名称で呼び出すような必要性がでてきた際には、この方が対応しやすいのではないかと思うからです。
パブリックメソッドとして、以下の二つを用意します。
- モーション開始前の状態を定義する関数の数を返すメソッド
- モーション開始前の状態を定義する関数自体を返すメソッド
前者は関数を格納した配列の長さを取得できればよいので、ゲッターを使って、配列の length をそのまま返すようにします。
後者は、引数で指定した数字を、関数を格納した配列のインデックスとし、そのインデックスに対応した配列の中身(関数)を返します。
この改造にともない MotionEngine.init() を廃止し、そこで取得していたステージのサイズは MotionEngien.motion() で取り込むようにしました。
これにより MotionEngine.as のプロパティをなくすことができました。
- ソース( grid03.zip 2.59 KB Main.as、MotionEngine.as、StateDefine.as のみ。あとは grid01.zip のものがそのまま使えます。)
シリーズ
- 動くグリッド by tweener (1)
- 動くグリッド by tweener (2)
- 動くグリッド by tweener (3)
- 動くグリッド by tweener (4)
- 動くグリッド by tweener (6)