有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java和引擎更新

我正在努力学习和学习英语,一直在胡乱摆弄这些例子。我正在修改的是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秒运行一次代码

提前谢谢


共 (1) 个答案

  1. # 1 楼答案

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

    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方法。我说关闭,因为UpdateThread不一定精确到最后一毫秒。这与代码中的建议基本相同,不同之处在于TimerHandler将实际处理更新方法并决定何时执行(这比创建自己的UpdateHandler更简单)