应用程序全屏后,Libgdx控制器无响应

时间:2017-12-17 23:33:16

标签: java controller libgdx fullscreen display

使用以下调用使应用程序全屏显示时:

Gdx.graphics.setFullscreenMode(Gdx.graphics.getDisplayMode());

我的控制器不再有信号了。通过从全屏更改显示来解决问题,如:

 Gdx.graphics.setWindowedMode(Gdx.graphics.getWidth() / 2, Gdx.graphics.getHeight() / 2);

我正在使用Gdx版本:1.9.8。看来这是以前版本中修复的一个问题,但我不确定是什么必要的步骤才能使工作正常运行。 这是我发现的关于这个问题的一些帖子:

https://github.com/libgdx/libgdx/issues/4723

https://github.com/GoranM/bdx/issues/518

(这个是旧的)http://www.badlogicgames.com/forum/viewtopic.php?f=11&t=10692

非常感谢任何帮助。

*编辑:这是使用可以从libgdx设置应用程序检查的控制器扩展。 *

Edit2:如果我重新轮询控制器,我可以得到一个响应控制器,如下所示:

 Array<Controller> controllers = Controllers.getControllers();

但是,更改显示模式后无法立即执行此操作;我必须等待一段时间。我不确定我需要轮询什么来确定我必须等到控制器实例有效多久(同样,当它有效分配一个监听器时)。

Edit3:我能够想出的唯一解决方案是在resize回调中设置一个标志,如下所示

@Override
public void resize(int width, int height) {
    resizeDirty = true;
    resizeTimestamp = System.currentTimeMillis();
}

然后在我的主循环调用中:

private void controllerCheck() {
    if (resizeDirty) {
        long currentTime = System.currentTimeMillis();
        if (currentTime > resizeTimestamp + controllerResetDelay) {
            resizeDirty = false;
            //get new controller instance | re-add a controller listener
        }
    }
}

这不太理想,我宁愿找到一种方法来监听上下文的变化是否完成初始化然后更新控制器。但我无法为此找到一个钩子。如果有人知道在显示模式下改变维护控制器的更好方法,我会很感激。

1 个答案:

答案 0 :(得分:0)

为什么不尝试使用沉浸式全屏? 如果目标是设置全屏模式,我认为这是更好的方式。