LibGDX屏幕更改输入处理器

时间:2014-06-20 23:15:09

标签: android input touch libgdx screen

我正在开发一款新游戏,我正在使用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注册触摸?

提前致谢

1 个答案:

答案 0 :(得分:3)

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

实际上你不是直接从屏幕1跳到屏幕4.它是1 - > 2 - > 3 - > 4,但速度很快,看起来像它会立即跳转到屏幕4.这里没有多线程,一次只有一个屏幕活动。

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