2014-11-14 115 views
0

我在執行代碼中的touchDown表示時遇到問題。
我使用迭代器在屏幕上運行表示球紋理的圓圈。 在下面的代碼中,我將所有不相關的部分切割爲當前用戶觸摸它時從屏幕上移除球\圓的問題。此刻,我調用該方法波紋管在我的渲染和使用:libGDX touchDown困難

int x1 = Gdx.input.getX(); 
    int y1 = Gdx.input.getY(); 
    Vector3 input = new Vector3(x1, y1, 0); 
    cam.unproject(input); 

,並使用「輸入」作爲參數「ballsIterator(輸入);」。問題是我被告知爲了停止觸摸效果,我需要使用touchDown方法中的代碼。但我該怎麼做呢?這個方法的完整版本不得不放在render方法中,而不管是否有觸及效果,我嘗試實現InputProcessor並在touchDown方法中重複該方法的代碼,但沒有在render方法中調用它,所以它沒有沒有工作,當我試圖在渲染內部調用它時,我不知道用什麼參數來指定「int指針,int按鈕」...問題是,在完成上述所有操作後,如何使用touchDown方法在我的代碼?

private void ballsIterator(Vector3 input){ 
    Iterator<Circle> iterBall = balls.iterator(); 
    while (iterBall.hasNext()) { 
     Circle ball = iterBall.next(); 
     if (dog.velocity.x != 0) { 

      if (ball.contains(input.x, input.y)) { 
       iterMeteor.remove(); 
      } 
     } else { 
      iterMeteor.remove(); 
     } 
    } 
} 
+0

存儲'Vector3 touchPos'並將其設置在'touchDown':'touchPos = cam.unproject(new Vector3(screenX,screeny,0))'中。在'touchUp'中簡單地將它設置爲'null'並且在'render'中,您可以說'if(touchPos!= null)ballsIterator(touchPos);' – Springrbua 2014-11-14 14:21:04

+0

刪除我的預覽評論,因爲我玩過,遵循你的解釋並設法實現我想要的。謝謝! – user3395989 2014-11-15 13:03:13

+0

如果你解決了你的問題,你可以發佈解決方案作爲答案並接受它,它可以幫助其他人解決同樣的問題。 – Springrbua 2014-11-17 06:28:12

回答

0

有了Springbua的解釋,我設法通過分割Iterator方法來解決我的問題。重複必要的部分並將負責點擊的代碼複製到一個以Vector3作爲參數的新的公共靜態無效方法中,並在實現InputProcessor的類中創建一個Vector3,給它一個touchDown參數,稱爲新的Iterator方法保持點擊部分並使用InputProcessor類的Vector3作爲其參數。