スポンサーサイト

--.--.--.--.--:--
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

unregisterEntityModifierの使い方

2014.05.22.Thu.22:59
先日の記事でSpriteに対するregisterEntityModifierの停止方法として
clearEntityModifiers()を紹介しましたが、

複数のregisterEntityModifierの中から一部の物だけを止める方法として、
unregisterEntityModifierとModifierの動きも記述してましす。

まずは参考ロジックです。

LoopEntityModifier lem = new LoopEntityModifier(
new SequenceEntityModifier(
new MoveXModifier(0.5f, getX(), getX()-100),
new MoveXModifier(0.5f, getX()-100, getX())));   //①左右に揺れる
AlphaModifier am = new AlphaModifier(3.0f, 0, 1);   //②徐々に表示される
MoveXModifier mxm = new MoveXModifier(3.0f, getX(), getX()-200);   //③左に移動
MoveYModifier mym = new MoveYModifier(3.0f, getY(), getY()-200);   //④上に移動

SequenceEntityModifier sem = new SequenceEntityModifier(am,mxm,mym);
//↑②、③、④の順に実行させる
Sprite.registerEntityModifier(sem);   //スプライトに登録
Sprite.registerEntityModifier(lem);   //スプライトに登録
Sprite.unregisterEntityModifier(sem);   //すでに登録されているsemのみを削除する。

このようなロジックを書く場合、
結果的に実行されるのは①だけとなります。

unregisterEntityModifierを行わない場合には
実行順は(②、③、④)と①が並行実行されます(ParallelEntityModifierを行うのと同じこと)

参考図書(AndEngineでつくるAndroid2Dゲーム)をまねると、
Sprite.registerEntityModifier(new ParallelEntityModifier(
new SequenceEntityModifier(②、③、④),
new LoopEntityModifier(①));
のようになるでしょうかね(たぶん

背景などはひとまとめにして記述するのもいいのですが、
敵の動きなど相対的に動きが変わるものには
後々EntityModifierを追加・削除したくなることがあります。

このような場合にはModifierを変数として持たせることでパーツ的に組み合わせることができます。
(フィールド変数に持たせればいろんなところから取り出せます)

eclipseでデバックする際に、Spriteを監視してみてください。
Spriteに格納されたModifierが配列(構造体?)として組み込まれているのがわかります。

画面エフェクトなどに使い勝手がいいですね。
スポンサーサイト
コメント

管理者にだけ表示を許可する
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。