1

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

4

2 回答 2

7

延迟修饰符的另一种方法是使用 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();
                }
            }
        }));

== 更新 == 尽管这是公认的答案,但我相信下面 Nicolas Gramlich 的答案更好。当然,作为 Nicolas Gramlich,他并没有真正记录他的答案,但希望你去百科全书“Andengine 示例”中查找。所以这里是你将如何使用延迟修饰符:延迟修饰符是上述内容的理想选择,因为你已经在使用移动修饰符,因此将修饰符链接在一起很简单。

这是 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 解决方案将为您完成。

于 2012-04-27T17:42:09.410 回答
3

延迟修饰符。

(十六个字符)

于 2012-04-27T15:58:34.093 回答