我正在开发一款新游戏,我正在使用LibGDX实现屏幕。
我对屏幕与触摸相结合有点困惑。
我在渲染方法中有这个:
if (Gdx.input.isTouched()) {
game.setScreen(new GameScreen(game));
dispose();
}
目前我有4个不同的屏幕,当isTouch被触发时它们都会改变,问题是我触摸第一个屏幕一次后从屏幕1到4。 我试图将inputprocessor设置为null但它仍然从屏幕1跳到4而不等待每个屏幕。屏幕1上的触摸似乎也会在屏幕2 3和4处自动触发。如何在下一个屏幕加载之前重置输入处理器或将其返回true,以便它不会从屏幕1注册触摸?
提前致谢
答案 0 :(得分:3)
静态Gdx.input.isTouched()
不依赖于设置的任何InputProcessor
。
实际上你不是直接从屏幕1跳到屏幕4.它是1 - > 2 - > 3 - > 4,但速度很快,看起来像它会立即跳转到屏幕4.这里没有多线程,一次只有一个屏幕活动。
让所有屏幕implement InputProcessor
并更改touchUp
方法中的屏幕。在Screen.show()
方法中,您可以将有效输入处理器设置为当前屏幕,并在Screen.hide()
中将其设置为null
。这样,只要屏幕isTouched()
,您每次触摸时只会更改一次一次屏幕,而不是每一帧都更改。