问题描述
我正在编写一个小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);