動くグリッド by tweener (3)
2007/04/30 21:09 - tweener
前回の動くグリッドのサンプルは、グリッドを構成する各セルのスケールだけがトゥイーンし、位置は静止したままでした。
今回は、座標のトゥイーンもおこなうように改造してみます。
ランダムで以下の5つの座標からのトゥイーンを付加しましょう。
- ステージの左上 ( 0 , 0 )
- ステージの右上 ( stage.stageWidth , 0 )
- ステージの左下 ( 0 , stage.stageHeight )
- ステージの右下 ( stage.stageWidth , stage.stageHeight )
- ステージの中央 ( stage.stageWidth/2 , stage.stageHeight/2 )
座標のトゥイーンを実現するためにはどこをどう改造するか。
到達座標は各セルオブジェクトが保持しています。 よって開始座標だけを何処かに保持すれば良い。 まぁ何処かといってもトゥイーンを司るクラスは MotionEngine.as なので、改造を施すのはこのクラス以外にあり得ないワケですが。
ということで MotionEngine.as にステージのサイズを保持するよう改造します。
ここは Tweener に倣って init メソッドの追加で対処してみましょう。 倣いついでに書式も Tweener と同じにします。
また stage.stageWidth と stage.stageHeight を保持するプロパティも用意します。
<追加インポート> import flash.display.Stage; <追加プロパティ> private static var w : Number; private static var h : Number; <追加メソッド> public static function init( rootStage:Stage ):void { // ステージサイズ登録 w = rootStage.stageWidth; h = rootStage.stageHeight; }
そして以下のふたつのメソッドに、座標のトゥイーンを反映するよう修正を加えます。
- セルオブジェクトをモーション前の状態にする initObjState
- トゥイーン実行メソッドの doObjTween
最後に Main.as に以下の一文を付け加えれば完成。
MotionEngine.init( stage );
分かりやすいよう、Tween.init( stage ); の直下に記述してみました。
- ソース( grid01.zip 9.39 KB )
これでスケールの他に座標のトゥイーンもできるようになりました。
追記
Tweener ver.1.24.51 以降では Tweener.init( stage ) の記述は不要です。
シリーズ
- 動くグリッド by tweener (1)
- 動くグリッド by tweener (2)
- 動くグリッド by tweener (4)
- 動くグリッド by tweener (5)
- 動くグリッド by tweener (6)