andengine でゲームをプログラミングしています。Runnable でループを作成しました。そして、wait(seconds) 関数を作成したいと思います。
たとえば、スプライトとして 10 個の小さな画像があります。それらは、MoveModifier によって 1 秒の速度で (100,100) から (100,400) に移動しています。-どうやってやるの?
2 に答える
遅延修飾子への別のアプローチは、TimerHanderを使用することです。タイマーハンドラーは、指定された遅延時間の後に定義した機能を実行します。Androidハンドラーを使用するのとは対照的に、TimerHandlerの優れた機能は、ゲームエンジンが一時停止して再開したときに、TimerHandlerが一時停止して再開することです。
andengineの例に含まれているSnakeゲームで使用されるTimerHandlerは次のとおりです。
/* Make the Snake move every 0.5 seconds. */
this.mScene.registerUpdateHandler(new TimerHandler(0.5f, true, new ITimerCallback() {
@Override
public void onTimePassed(final TimerHandler pTimerHandler) {
if(SnakeGameActivity.this.mGameRunning) {
try {
SnakeGameActivity.this.mSnake.move();
} catch (final SnakeSuicideException e) {
SnakeGameActivity.this.onGameOver();
}
SnakeGameActivity.this.handleNewSnakePosition();
}
}
}));
==更新==これは受け入れられた答えですが、以下のNicolasGramlichによる答えの方が優れていると思います。もちろん、Nicolas Gramlichであるため、彼は実際には彼の答えを文書化しませんでしたが、百科事典の「AndengineExamples」でそれを調べてみることを期待しています。したがって、DelayModifierの使用方法は次のとおりです。Delayモディファイアは、すでにmoveモディファイアを使用しているため、上記の説明に最適です。モディファイアをチェーンするのは簡単です。
andengineの例の例を次に示します(*作成者:Nicolas Gramlich) https://code.google.com/p/andengineexamples/source/browse/src/org/anddev/andengine/examples/EntityModifierExample.java?r=2b26f37114e50616bfcbb8e292e20988efd1acd6
調べる部分は次のとおりです。
new SequenceEntityModifier(
new RotationModifier(1, 0, 90),
new AlphaModifier(2, 1, 0),
new AlphaModifier(1, 0, 1),
new ScaleModifier(2, 1, 0.5f),
new DelayModifier(0.5f),
new ParallelEntityModifier(
new ScaleModifier(3, 0.5f, 5),
new RotationByModifier(3, 90)
),
new ParallelEntityModifier(
new ScaleModifier(3, 5, 1),
new RotationModifier(3, 180, 0)
)
)
遅延修飾子を使用して、任意の2つの修飾子の間に遅延を設定できることがわかります。ただし、遅延修飾子は、遅延が作成した関数ではなく、修飾子の一部である場合にのみ機能します。その場合、TimerHandlerソリューションがそれを行います。
DelayModifier。
(16文字)