在libgdx中检查(和做某事)触摸事件的最佳方法是什么?

时间:2015-04-21 00:59:03

标签: android libgdx

我有一个新手问题。我刚开始学习libgdx,我有点困惑。我阅读了文档/维基,我按照了一些来自gamefromscratch和其他人的教程,我还有一个问题。

检查触摸/点击事件的最佳方法是什么?

我正在使用场景和演员,我发现至少有4种方式(到现在为止)与演员互动,让我们说:

1) myActor.addListener(new ClickListener(){...});

2) myActor.setTouchable(Touchable.enabled); and putting the code in the act() method

3) verifying Gdx.input.isTouched() in the render() method

4) overriding touchDown, touchUp methods

任何有关某些细节和建议的帮助,何时使用其中一个,或者它们之间的区别是非常感谢。

感谢。

1 个答案:

答案 0 :(得分:2)

我一直在使用第一种方法,而且从OOP的角度来看,它是最好的"这样做的方法。

第二种方法不起作用。无论您是否将Actor设置为可触摸,只要您执行Actor.act(float),系统仍会调用stage.act(float)。这意味着你将在每一帧中执行你的代码。

Gdx.input.isTouched()只会告诉您触摸事件已在屏幕上任何地方发生。尝试找出哪个演员已被该触摸击中并不是一个好主意,因为他们已经能够确定自己(Actor.hit())。

我不知道你在哪里覆盖touchDowntouchUp。演员们没有这些方法,所以我假设你在谈论标准InputProcessor。在这种情况下,您将遇到与第3种方法相同的问题。

因此,为要监控这些事件的演员添加ClickListener可能是最好的方法。