我正在开发一款新游戏,我正在用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 回答
静态
Gdx.input.isTouched()
不依赖于任何InputProcessor
设置 .实际上你不会直接从屏幕1跳到屏幕4.它会变为1 - > 2 - > 3 - > 4,但速度太快以至于它会立即跳转到屏幕4.此处没有多线程,总是存在一次只有一个屏幕处于活动状态 .
让所有屏幕
implement InputProcessor
并更改touchUp
方法中的屏幕 . 在Screen.show()
方法中,您将活动输入处理器设置为当前屏幕,并在Screen.hide()
中将其设置为null
. 这样,只要屏幕isTouched()
,您每次触摸时只更改一次屏幕,而不是每帧都更改一次 .