【问题标题】:How to call the override pause method dynamically from Libgdx?如何从 Libgdx 动态调用覆盖暂停方法?
【发布时间】:2015-07-28 15:44:20
【问题描述】:

我创建了一个 Libgdx 游戏,我想知道是否可以使用 Libgdx 调用覆盖暂停方法生命周期?

这是我班级中的暂停方法生命周期:

public class MyGdxGame extends ApplicationAdapter {
    @Override
    public void pause() {
        super.pause();
        chrono.pause();
        //Display a pause menu
    }
}

而且我想在点击暂停图片时调用生命周期方法:

    imagePause = new Image(new Texture(Gdx.files.internal("pause.png")));
    imagePause.setSize(pauseSize, pauseSize);
    imagePause.setPosition(width - pauseSize, height - pauseSize);
    imagePause.addListener(new ClickListener() {
        @Override
        public void clicked(InputEvent event, float x, float y) {
            //Something like this? :
            Gdx.app.pause(); //Doesn't exist

            //I don't want to call manually the pause method like this       
            //because it doesn't pause Libgdx lifecycle ...
            pause();
        }
    });
    stage.addActor(imagePause);

有什么想法吗?

【问题讨论】:

  • 按下暂停按钮后您到底想发生什么?你说你想暂停 libgdx 生命周期。之后你打算如何恢复它?
  • 当我按下暂停按钮时,我想暂停 Libgdx 中的所有内容,并且我想显示一个带有播放按钮的暂停菜单。我计划在用户通过单击播放按钮关闭暂停菜单时恢复生命周期。
  • 当 libgdx 生命周期完全停止时,您将无法显示任何内容。只需设置一个paused 变量,在您的render() 方法中检查它并跳过所有游戏内容以防它被暂停。同时显示您的暂停菜单。
  • 是的,我认为你被暂停这个词用作生命周期事件的名称而感到困惑。你不想惹这个。创建你自己的暂停类型来改变渲染循环中发生的事情,就像@noone所说的那样。

标签: java libgdx overriding lifecycle onpause


【解决方案1】:

如果您的目标停止渲染

停止渲染:

Gdx.graphics.setContinuousRendering(false);

重新装上:

Gdx.graphics.setContinuousRendering(true);

在渲染停止时触发渲染:

Gdx.graphics.requestRendering();

文档:https://github.com/libgdx/libgdx/wiki/Continuous-&-non-continuous-rendering

希望对你有所帮助。

【讨论】:

    猜你喜欢
    • 2016-04-03
    • 2018-08-14
    • 2018-12-27
    • 1970-01-01
    • 2012-11-08
    • 1970-01-01
    • 1970-01-01
    • 2020-07-22
    • 1970-01-01
    相关资源
    最近更新 更多