微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

进入全屏后,libGDX 无法捕捉光标 按照try: wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, "input selector here"))) except: continue # or pass 的建议,从@Tenfour04切换到lwjgl可以解决这个问题!

如何解决进入全屏后,libGDX 无法捕捉光标 按照try: wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, "input selector here"))) except: continue # or pass 的建议,从@Tenfour04切换到lwjgl可以解决这个问题!

我正在编写一个libGDX游戏。使用 setCursorCatched(boolean) 捕获光标起初效果很好(隐藏光标符号并且不会让我退出窗口)但随后中断:

  • 当我用 F 进入全屏然后用 G 退出后,光标可以四面八方转义
  • 在我使用 F 和 2 个显示器进入全屏后,我还可以逃到我的第二个显示
  • 每帧都使用 setCursorPosition 并不能缓解这个问题。

完整的最小可重现示例(另见 my other question):

package xjcl.extracredits2020

import com.badlogic.gdx.*

class RangeAnxietyGame : ApplicationAdapter() {
    override fun create() {
        Gdx.input.apply { isCursorCatched = true }
    }

    override fun render() {
        if (Gdx.input.isKeypressed(Input.Keys.F))
            Gdx.graphics.setFullscreenMode(Gdx.graphics.displayMode)
        if (Gdx.input.isKeypressed(Input.Keys.G))
            Gdx.graphics.setwindowedMode(1280,720)
        if (Gdx.input.isKeypressed(Input.Keys.ESCAPE))
            Gdx.app.exit()

        Gdx.input.setCursorPosition(Gdx.graphics.width/2,Gdx.graphics.height/2)
    }
}

有没有办法强制光标停留在 libGDX 窗口中?

解决方法

按照try: wait.until(EC.presence_of_element_located((By.CSS_SELECTOR,"input selector here"))) except: continue # or pass 的建议,从@Tenfour04切换到lwjgl可以解决这个问题!

lwjgl3 中将第一个块更改为第二个块:

build.gradle
api "com.badlogicgames.gdx:gdx-backend-lwjgl:$gdxVersion"

还要调整您的导入(例如在 api "com.badlogicgames.gdx:gdx-backend-lwjgl3:$gdxVersion" 类中):

DesktopLauncher
import com.badlogic.gdx.backends.lwjgl.LwjglApplication;
import com.badlogic.gdx.backends.lwjgl.LwjglApplicationConfiguration;

就我而言,我还需要更新 import com.badlogic.gdx.backends.lwjgl3.Lwjgl3Application; import com.badlogic.gdx.backends.lwjgl3.Lwjgl3ApplicationConfiguration; 的配置:

DesktopLauncher
LwjglApplicationConfiguration config = new LwjglApplicationConfiguration();
config.samples = 8;
config.height = 720;
config.width = 1280;
config.vSyncEnabled = true;
new LwjglApplication(new RangeAnxietyGame(),config);

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。