在 libgdx 中检查(并执行某些操作)触摸事件的最佳方式是什么?
What's the BEST WAY to check (and do something) for a touch event in libgdx?
我有一个新手问题。我刚开始学习 libgdx,我有点困惑。我阅读了 documentation/wiki,我遵循了一些教程,例如来自 gamefromscratch 和其他人的教程,但我仍然有一个问题。
检查和执行 touch/tap 活动的最佳方式是什么?
我正在使用场景和演员,我发现至少有 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
任何关于何时使用一个而不是另一个的细节和建议的帮助,或者它们之间的区别将不胜感激。
谢谢。
我一直在使用第一种方法,我认为从 OOP 的角度来看,这是 "best" 的方法。
第二种方法行不通。无论您是否将 Actor
设置为可触摸,只要您设置 stage.act(float)
,Actor.act(float)
仍将被调用。这意味着您将在每一帧中执行您的代码。
Gdx.input.isTouched()
只会告诉您屏幕上任何地方 发生了触摸事件。试图找出 哪个 演员被那个触摸击中并不是一个好主意,因为他们已经能够自己确定 (Actor.hit()
)。
我不确定您要在哪里覆盖 touchDown
和 touchUp
。 Actor 没有这些方法,所以我假设您在谈论标准 InputProcessor
。在这种情况下,您将遇到与第三种方法相同的问题。
因此,将 ClickListener
添加到您要监视此类事件的参与者可能是最好的方法。
我有一个新手问题。我刚开始学习 libgdx,我有点困惑。我阅读了 documentation/wiki,我遵循了一些教程,例如来自 gamefromscratch 和其他人的教程,但我仍然有一个问题。
检查和执行 touch/tap 活动的最佳方式是什么?
我正在使用场景和演员,我发现至少有 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
任何关于何时使用一个而不是另一个的细节和建议的帮助,或者它们之间的区别将不胜感激。
谢谢。
我一直在使用第一种方法,我认为从 OOP 的角度来看,这是 "best" 的方法。
第二种方法行不通。无论您是否将 Actor
设置为可触摸,只要您设置 stage.act(float)
,Actor.act(float)
仍将被调用。这意味着您将在每一帧中执行您的代码。
Gdx.input.isTouched()
只会告诉您屏幕上任何地方 发生了触摸事件。试图找出 哪个 演员被那个触摸击中并不是一个好主意,因为他们已经能够自己确定 (Actor.hit()
)。
我不确定您要在哪里覆盖 touchDown
和 touchUp
。 Actor 没有这些方法,所以我假设您在谈论标准 InputProcessor
。在这种情况下,您将遇到与第三种方法相同的问题。
因此,将 ClickListener
添加到您要监视此类事件的参与者可能是最好的方法。