等待andengine的功能?

时间:2012-04-26 21:07:45

标签: android andengine wait

我正在使用andengine编写游戏。我使用Runnable创建了一个循环。我想创建一个等待(秒)函数。
例如,有10张小图片作为精灵。他们通过MoveModifier以1秒的速率从(100,100)移动到(100,400)。但我想:程序将在5到6张图片之间等待x秒。 -我怎样才能做到这一点?

2 个答案:

答案 0 :(得分:7)

延迟修改器的另一种方法是使用TimerHander。计时器处理程序将执行您在指定的延迟时间后定义的函数。与使用Android Handler相反,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();
                }
            }
        }));

==更新== 尽管这是接受的答案,但我相信Nicolas Gramlich的回答更好。当然是尼古拉斯·格拉姆利奇(Nicolas Gramlich),他并没有真正记录他的答案,但是希望你能在百科全书“Andengine Examples”中查阅。所以这是你如何使用DelayModifier: 延迟修改器是上述内容的理想选择,因为您已经在使用移动修改器,因此将修改器链接在一起很简单。

以下是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)
    )
)

你可以看到你可以在任何两个带有延迟修饰符的修饰符之间加一个延迟。 但是,延迟修饰符仅在延迟是修饰符的一部分时才起作用,而不是您编写的函数。在这种情况下,TimerHandler解决方案将为您完成。

答案 1 :(得分:3)

DelayModifier。

(十六个字符)