2013-08-02 30 views
1

在我的libgdx項目中,我有一個手勢監聽器和一個輸入處理器在不同的類中使用。一個在主狀態內的玩家之一。如果我將其中的一個分配爲輸入處理器:Gdx.input.setInputProcessor();那麼我將無法從另一個輸入輸入。LibGdx:利用手勢和鼠標輸入

我試圖用輸入多路複用器:

InputMultiplexer multi = new InputMultiplexer(); 

GestureHandler gesture = new GestureHandler(); 
InputProccessor input = new InputProcessor(); 

multi.addProcessor(new GesturDetector(gesture)); 
multi.addProcessor(new GestureDetector(input); 

Gdx.input.setInputProcessor(multi); 

這沒有工作,導致遊戲崩潰。我寧願避免多路複用器。無論如何檢查兩種輸入法嗎?

回答

1

Multiplex是您的問題的正確答案。

多路複用器常常忽略的一件事是處理程序的返回值(true或false)非常重要。 (沒有多路複用器就忽略它)。結果表明您是否「處理」了輸入。處理的事件不會傳播到多路複用器中的下一個處理器。另外,默認情況下,由Eclipse創建的存根方法將返回'true',這沒有幫助。

無論如何,這不應該崩潰。

+0

我有一個類實現InputProcessor和GestureDetector。當我寫multiplexer.addProccessor(this);它只是添加輸入,所以手勢仍然不起作用。 – Bevilacqua

+0

啊,是'InputMultiplexer'需要兩個不同的對象。最容易的黑客可能只是創建一個新的'GestureDetector'對象,將其調用轉發給原始對象。 –

+0

我很抱歉成爲一個煩惱,但我會怎麼做? – Bevilacqua