2016-04-16 106 views
0

所以我有3個矩形的行爲像包含方法的按鈕。前兩個按鈕只是左右移動字符,但第三個是用戶touchDown跳轉,然後拋出一個當touchUp時球。 我的問題是,當按鈕被按下時,像我按住跳轉按鈕同時按住並釋放左/右按鈕時,它們會混合起來。LibGdx多點觸摸事件混淆

我知道有指針ID的東西,但它是混亂如地獄。

+0

每一個觸摸都有一個指針索引。如果您使用的是Gdx.input.getX()或getY()方法,則它們將返回最後一次觸摸並且僅返回最後一次觸摸。最後**單**觸摸。 – ossobuko

回答

0

設置新InputProcessor到Gdx.input.setInputProcessor(),並檢查是否觸摸點被包含在你的矩形,這樣的事情應該工作:

 Gdx.input.setInputProcessor(new InputAdapter() { 
     @Override 
     public boolean touchDown(int screenX, int screenY, int pointer, int button) { 
      if(leftRect.contains(screenX, screenY)){ 
       //move player left 
       return true; 
      } 

      if(rightRect.contains(screenX, screenY)){ 
       //move player right 
       return true; 
      } 

      return false; 
     } 

     @Override 
     public boolean touchUp(int screenX, int screenY, int pointer, int button) { 
      if(jumpRect.contains(screenX, screenY)){ 
       //make player jump 
       return true; 
      } 
      return false; 
     } 
    }); 

我強烈建議你使用Scene2D爲用戶界面相關的東西,它可能有點難以開始,但它會讓你的UI編碼更易於實施和維護。

+0

你打算不接觸座標? – ossobuko

+0

非常感謝!我認爲我必須通過指針ID-s來處理自己的多點觸摸事件,但事實證明它是默認完成的。 – WannabeHacker

+0

很高興能夠提供幫助,請記住,接觸點始終位於屏幕像素座標中,如ossobuko所示,如果不使用像素完美的相機,則可能需要取消投影座標。 –