動くグリッド by tweener (4)
2007/05/03 21:55 - tweener
前回、動くグリッドに対して、各セルが座標のトゥイーンにも対応できるように改良を加えました。
今回は、そのために施した MotionEngine.initObjState の改造部分の見直しについてです。
なぜなら、そのコードがあまりにも格好が悪過ぎるから。
その前に一つ。
前回のエントリーについて重要なご指摘をいただきました。
using Tweener.init() is not needed in Tweener anymore.
(もう Tweener.init() は不要。)
私は ver.1.24.47 の tweener を使って、前回のコードを記述したのですが、tweener - Google Code にある ver.1.24.51 を使えば Tweener.init は不要ということです。早速導入させてもらいました。
また、作者様の Blog を拝見すると、バージョンアップした tweener には、さらに魅力的な機能も追加されています(ver.1.25.53)。
Papervision3D と組み合わせたカメラワークのサンプルがとても素晴らしいです。
話を元に戻します。
今回の MotionEngine.initObjState の修正では、FLASH-FACTORY においてシライカズトシ氏が使っていたテクニックを参考にしました。
前回は switch で振り分けることにより、5カ所のトゥイーン開始点をセルオブジェクト群に認識させました。
今回の修正では、認識させる部分を一つずつ独立した関数としてコーディングします。
そうすると5つの関数ができるわけですが、それを配列に格納します。
その 5つの関数と、それらを配列に格納する部分を、一つのメソッド MotionEngine.setState にします。
その setState は MotionEngine.init() で呼び出します。
ついでに、前回は一つの引数として stage だけを読み込んでいましたが、ここを width と height の二つの引数に分離しました。
そうすると MotionEngine.as の import 文が一つ減らせるからです。
それに併せて Main.as の記述にも修正を加えます。
Tweener.init( stage ) も削除します。
これらの改造を加えた結果、MotionEngine.initObjState が2行で済むようになりました。
その分 MotionEngine.setState が長たらしく感じますが、角度や色などを追加したり、あるいは、ある場合は座標だけ、ある場合はスケールと角度だけ、といったような感じでトゥイーン開始前の状態を複雑に分岐させたいときは、こういう記述の方が応用が利きます。
ところで、この setState の部分ですが、tweener の Equations.as のような形で外部化すれば、もっとスマートになりそうです。
- ソース( grid02.zip 1.97 KB Main.as と MotionEngine.as のみ。あとは grid01.zip のものがそのまま使えます。)
追記(2007/05/05)
本文中、魅力的な機能も追加された tweener のバージョンを ver.1.24.53 と書きましたが、正しくは ver.1.25.53 です。訂正してお詫びいたします。
コメント欄よりのご指摘、感謝いたします。
シリーズ
- 動くグリッド by tweener (1)
- 動くグリッド by tweener (2)
- 動くグリッド by tweener (3)
- 動くグリッド by tweener (5)
- 動くグリッド by tweener (6)