首页 文章

LibGDX屏幕更改输入处理器

提问于
浏览
0

我正在开发一款新游戏,我正在用LibGDX实现Screens .

屏幕与触摸相结合,我有点卡住了 .

我在我的渲染方法中有这个:

if (Gdx.input.isTouched()) {
game.setScreen(new GameScreen(game));
dispose();
}

目前我有4个不同的屏幕,当isTouch被触发时它们都会改变,问题是在我触摸第一个屏幕一次后它从屏幕1到4 . 我试图将inputprocessor设置为null但它仍然从屏幕1跳到4而不等待每个屏幕 . 屏幕1上的触摸似乎也会在屏幕2 3和4处自动触发 . 如何在下一个屏幕加载之前重置输入处理器或将其返回true,这样它就不会在屏幕1中注册触摸?

提前致谢

1 回答

  • 3

    静态 Gdx.input.isTouched() 不依赖于任何 InputProcessor 设置 .

    实际上你不会直接从屏幕1跳到屏幕4.它会变为1 - > 2 - > 3 - > 4,但速度太快以至于它会立即跳转到屏幕4.此处没有多线程,总是存在一次只有一个屏幕处于活动状态 .

    让所有屏幕 implement InputProcessor 并更改 touchUp 方法中的屏幕 . 在 Screen.show() 方法中,您将活动输入处理器设置为当前屏幕,并在 Screen.hide() 中将其设置为 null . 这样,只要屏幕 isTouched() ,您每次触摸时只更改一次屏幕,而不是每帧都更改一次 .

相关问题