【问题标题】:AndEngine UpdateAndEngine 更新
【发布时间】:2013-05-02 12:15:41
【问题描述】:

我正在尝试学习 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 秒运行一次代码?

提前致谢

【问题讨论】:

    标签: java android andengine physics


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

    【讨论】:

    • 对不起,我是一个完整的白痴,但我应该在哪里实现这段代码,到目前为止,我已经尝试过 onCreateScene() 和 onResumeGame() 但我不断收到类似“构造函数 TimerHandler(float, boolean) 之类的错误, new ITimerCallback(){}) 未定义”
    • 抱歉,代码有一点错误。我在我的活动中尝试过,这个对我有用。实际上,您应该能够在您想要的任何地方创建您的 TimerHandler 并将其注册到您项目中的任何类型的场景、实体或 Sprite。在这里,我确实将它包含在 onCreateScene() 中(所以它在活动中,methodWithStuffToDo 也在活动中,并且处理程序被注册到场景中)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-12
    • 2013-03-29
    • 1970-01-01
    相关资源
    最近更新 更多