2011-04-13 29 views
0

讓計算器應用程序開始工作後,我決定嘗試創建pong。中間有一個盒子,兩端有兩個槳。手機是水平的。我的箱子從牆上彈開,隨着我的手指向下移動,槳板也隨之移動。我的問題是我想讓它成爲兩個玩家,我想要爲遊戲提供多個手指輸入。我想一個手指移動槳和其他移動槳2.到目前爲止,這是我的輸入代碼Android開發的多指輸入

@Override 
public boolean onTouchEvent(MotionEvent ev) { 
     final int action = ev.getAction(); 
     switch (action) { 

     case MotionEvent.ACTION_MOVE: { 
      // Find the index of the active pointer and fetch its position 



      float p1y = ev.getY(); 

      if(ev.getX()<300) 
      { 
       player1y = p1y; 
      } 
      if(ev.getX()>300) 
      { 
       player2y = p1y; 
      } 

      //player1y = p1y; 

      invalidate(); 
      break; 
     } 

     } 
     return true; 


    } 

它駐留在我的surfaceview類。我怎樣才能修改輸入法或完全擺脫它,並改變它來實現我的目標?也對我的變數感到抱歉。 Eclipse對我來說崩潰了很多,我的筆記本電腦觸摸面板往往會移動我的光標,所以更短的變量似乎是可行的。 p1y是觸摸的y。 player1y和player2y是player1和player2槳的y位置。

+0

下面的工作做了答案嗎?我一直在檢查它,我不能看到這將允許你有兩個手指同時在兩個不同的方向移動兩個槳。任何反饋意見,因爲我目前正在試圖找出類似的問題,謝謝 – Holly 2012-01-13 17:03:43

+0

下面的答案確實工作,並完美地解決了這個問題。 – user700508 2012-01-17 15:56:59

回答

2

MotionEvent可以容納多個指針。使用getPointerCount()查看當前事件中有多少指針觸摸屏幕。有getXgetY的替代版本,其索引從0- getPointerCount() - 1

在更復雜的應用程序,你會希望跟蹤由指針ID手指,但東西這個簡單,你所使用的屏幕上的分界點,你可以做這樣的事情在你的ACTION_MOVE情況:

int pointerCount = ev.getPointerCount(); 
for (int i = 0; i < pointerCount; i++) { 
    float x = ev.getX(i); 
    float y = ev.getY(i); 

    if (x < 300) { 
     player1y = y; 
    } else if (x > 300) { 
     player2y = y; 
    } 
} 

如果您想了解更多信息,可以從Android開發者博客上找到這篇文章:http://android-developers.blogspot.com/2010/06/making-sense-of-multitouch.html