2015-04-21 22 views
1

我有一個新手問題。我剛開始學習libgdx,我有點困惑。我閱讀了文檔/維基,我跟着一些教程,比如gamefromscratch和其他教程,還有一個問題。對於libgdx中的觸摸事件檢查(並執行某些操作)的最佳方式是什麼?

什麼是最好的方式來檢查和做一些觸摸/點擊事件?

我使用場景和演員,我發現與演員互動的至少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 

一些細節和建議任何幫助時,在使用一個另一方面,或者他們之間的區別是什麼,將非常感激。

謝謝。

回答

2

我一直在使用第一種方法,我認爲從OOP的觀點來看,這是實現它的「最佳」方法。

第二種方法不起作用。無論您是否設置Actor爲可觸摸,Actor.act(float)仍會在您執行stage.act(float)時調用。這意味着你會在每一幀中執行你的代碼。

Gdx.input.isTouched()只會告訴你一個觸摸事件發生在屏幕上的任何地方。試圖找出其中演員已經被觸摸了,因爲他們已經能夠確定他們自己(Actor.hit())並不是一個好主意。

我不確定在哪裏覆蓋touchDowntouchUp。演員沒有這些方法,所以我假設你正在談論標準InputProcessor。在這種情況下,您會遇到與第三種方法相同的問題。

因此,將ClickListener添加到要監視這類事件的演員可能是最好的方法。

+0

感謝@noone爲您的答案。另一個後續問題,比方說,它與此有關,我不想爲此提出新的問題。 什麼事件監聽器是「最好的」或推薦用於檢查觸摸/點擊(我只對移動設備感興趣,不關心桌面):我可以使用InputListener()和touchDown()方法,或者我可以使用ClickListener()和clicked()。我猜他們在移動應用上做了同樣的事情,但只是想知道在使用它們時是否有任何不同。再次感謝 –

+0

觸摸和點擊是一樣的,唯一的區別是在移動時,touchDown發生之前沒有移動的指針。 'ClickListener'實際上*是一個'InputListener',但它提供了更多的功能。使用'ClickListener'進行操作。 – noone

相關問題