1

我正在尝试学习 AndEngine 并且一直在弄乱这些示例。我正在修改的是PhysicsJumpExample

我想做的是每 X 秒运行一次。我做了一些搜索,发现有人建议:

this.scene.registerUpdateHandler(new IUpdateHandler() {
@Override
public void onUpdate(float pSecondsElapsed) {
        // TODO Auto-generated method stub
        //Your code to run here!
}

但我发现我不能这样做可能是因为:

this.mScene.registerUpdateHandler(this.mPhysicsWorld);

我将如何每 X 秒运行一次代码?

提前致谢

4

1 回答 1

4

您可以像这样注册一个计时器处理程序:

protected Scene onCreateScene() {
    Scene myScene = new Scene();  // somewhere you create your scene
    float xSeconds = 5.5f; // meaning 5 and a half second
    boolean repeat = true; // true to reset the timer after the time passed and execute again
    TimerHandler myTimer = new TimerHandler(xSeconds, repeat, new ITimerCallback() {
        public void onTimePassed(TimerHandler pTimerHandler) {
            methodWithStuffToDo();
        }
    });
    myScene.registerUpdateHandler(myTimer);   // here you register the timerhandler to your scene

    .... // some other stuff
    return myScene;
}

然后你在你的场景中编写一个方法来实现你想要在定时器完成时执行的代码:

public void methodWithStuffToDo(){ ... }

解释:

TimerHandler 将在onUpdate更新线程的方法中被检查。当接近指定时间(此处为 5.5 秒)时,将触发 onTimePassed 方法。我说close,因为 UpdateThread 不一定精确到最后一个毫秒。这与您的代码中的建议基本相同,不同之处在于 TimerHandler 将实际处理更新方法并决定何时执行什么操作(这比创建自己的 UpdateHandler 更简单)。

于 2013-05-02T12:28:33.140 回答