我有一个新手问题。我刚开始学习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
任何有关某些细节和建议的帮助,何时使用其中一个,或者它们之间的区别是非常感谢。
感谢。
答案 0 :(得分:2)
我一直在使用第一种方法,而且从OOP的角度来看,它是最好的"这样做的方法。
第二种方法不起作用。无论您是否将Actor
设置为可触摸,只要您执行Actor.act(float)
,系统仍会调用stage.act(float)
。这意味着你将在每一帧中执行你的代码。
Gdx.input.isTouched()
只会告诉您触摸事件已在屏幕上任何地方发生。尝试找出哪个演员已被该触摸击中并不是一个好主意,因为他们已经能够确定自己(Actor.hit()
)。
我不知道你在哪里覆盖touchDown
和touchUp
。演员们没有这些方法,所以我假设你在谈论标准InputProcessor
。在这种情况下,您将遇到与第3种方法相同的问题。
因此,为要监控这些事件的演员添加ClickListener
可能是最好的方法。