BetweenAS3 テスト(1)
2009/05/11 21:38 - AS3.0
さっそく BetweenAS3 触ってみましたよ。 っても Tweener と入れ替えたレベルのコードしか書いてないけどな!
正方形のタイルを縦62個×横62個、計3844個ステージ上に敷き詰めて、トランジション風な動きをさせました。
クリックした場所を起点としてさざ波が起きるような感じ。
その昔 Tweener でこれを試したことがあるんですが、25×25=625個のタイルくらいがせいぜいってな感じだったんですよ。
BetweenAS3 はスゴいっすね。3844個のタイルでも実用レベルで動く。 なんて素晴らしい。萌える!
ところでこのプログラムは以下のような構造をしています。
Main └Subject ├Tile ├Tile ├Tile ├…… └Tile
Subject と Tile はオブザーバパターンです。
マウスクリックが発生すると、Subject がすべての Tile に通報します。 そしてそれをトリガーに Tween が発生する仕組みです。
で、今回考慮したのは、Tween 実行の記述をどこに、どのようにするのか、ということ。
Tween 実行の記述場所、つまり BetweenAS3 の import をどこにするのかということに関しては以下の2カ所が考えられます。
- Tile クラス
- Subject クラス
オブジェクト指向的には Tile クラスに import したいところですが、このプログラムでは Tile オブジェクトは3844個生成されます。一方 Subject オブジェクトは1個だけです。
3844個もインスタンスが作られる Tile クラスに BetweenAS3 を import すると何かとても重くなりそうな気がしたので、今回は Subject で一括管理することにしました(実際試してみたところ、Tile に import しても、Subject に import してもそんなにメモリ的にも速度的にも変わらないもよう)。
で Tweener なら以下のような記述になるところです。
for each (var tile:Tile in Tile 格納配列) { Tweener.addTween(tile, {scaleX:○○, scaleY:○○, ……}); }
でもここでちょっと考えます。
BetweenAS3 には、トゥイーンオブジェクトを配列に格納し、後で一括して処理する BetweenAS3.parallel というのがあるそうな。
今回は Tweener 風に一つずつ順次実行する方法ではなく、その parallel とやらを使って、ああ今ボクは BetweenAS3 を使っているのだなぁ感に浸ることにしました。
なお、parallel 使用時の記述方法は、[1日1Wonderfl] 8日目:a practice of BetweenAS3 を参照させていただきました。