Progressionのコマンド使ってみたメモ
ココらへんのエントリーから続いて Progression Framework を触っております。
今回はコマンドを試してみたのでメモメモ。 version 2.0.13 で試しております。
MovieClip や Button などのキャストクラスを、 ステージに配置したり、逆に消したりする時に、 _onInit とか _onGoto とかでやる訳なのですが、 ノーマルにやるとこんな感じになる。
override protected function _onInit():void
{
// childはCastScpriteとかのインスタンス
progression.container.addChild(child);
}
override protected function _onGoto():void
{
progression.container.removeChild(child);
}
コマンド使うとこうなる。
// コマンドクラスをインポート
import jp.progression.commands.AddChild;
import jp.progression.commands.RemoveChild;
override protected function _onInit():void
{
// コマンドを使ってaddChildする
addCommand(new AddChild(progression.container, child));
}
override protected function _Goto():void
{
// コマンドを使ってremoveChildする
addCommand(new RemoveChild(progression.container, child));
}
この場合だと、どっちでやっても結果は同じ。 なら、わざわざクラスを使う必要無いんじゃ?って疑問がチラホラ。 が、実はこれら2つには重大な違いが。 コマンドクラスを使って操作すると、 操作される側のイベントを上手くトリガーしてくれたり、 コマンドの同期をとってくれたりする。
例えば、こんなクラスがありまして、
package
{
import jp.progression.casts.CastSprite;
public class Child extends CastSprite
{
public function Child()
{
graphics.beginFill(0x000000);
graphics.drawRect(0, 0, 100, 100);
graphics.endFill();
}
}
}
これに _onCastAdd や _onCastRemove なイベントを設定した場合、 例えば Tweener 使ってやるとしたらこんな感じになる。
override protected function _onCastAdded():void
{
// あらかじめalpha = 0しておく。
addCommand(new DoTweener(this, {
alpha: 1,
time: 1,
transition: "easeInSine"
}));
}
override protected function _onCastRemoved():void
{
addCommand(new DoTweener(this, {
alpha: 0,
time: 1,
transition: "easeOutSine"
}));
}
これをトリガーしてやろうとすると、 操作する側がコマンドで行ってあげる必要がある。
ドラマチック で エモーショナル な動きを出したい時は、
迷わずコマンドで操作する。って覚えておくと良いよね ![]()
- Posted at:
- 2008/03/25 03:21:51
- 0 Comments
- 0 TrackBacks
- Trackback:
- http://humming.via-kitchen.com/2008/03/25/progression-command-memo/trackback/
TrackBacks
まだ登録されていません。
Comments
まだ登録されていません。