2012-08-10 181 views
0

我在onTouch方法中遇到了多個指針的問題。 所有指針都與一個布爾值相關聯,如果關閉,則返回true;如果關閉,則返回false。如果一個指針從true變爲false,這非常重要,它不會影響其他布爾值。指針問題! (Android)

我遇到的問題是,例如指針1和2下降,指針2上升(更改爲false),指針1也在該迭代中更改爲false。這是因爲當指針計數改變時指針ID正在改變。

對於如何解決我遇到的問題你有什麼建議嗎?

這是代碼:

public boolean onTouch(View v, MotionEvent event) { 
    // TODO Auto-generated method stub 
    int action = (event.getAction() & MotionEvent.ACTION_MASK); 
    int pointCount = event.getPointerCount(); 

    for (int i = 0; i < pointCount; i++) { 
     int id = event.getPointerId(i); 


     if (id < MAX_NUMBER_OF_POINT) { 
      Log.d(TAG, String.valueOf(id)); 
      xA[id] = (int) event.getX(i); 
      yA[id] = (int) event.getY(i); 

      if ((action == MotionEvent.ACTION_DOWN) 
        || (action == MotionEvent.ACTION_POINTER_DOWN) 
        || (action == MotionEvent.ACTION_MOVE)) { 
       touching[id] = true; 
      } else { 
       Log.e(TAG, "i: " + String.valueOf(i)); 
       Log.e(TAG, "id: " + String.valueOf(id)); 
       touching[id] = false; 
      } 
     } 
    } 


    for (int i2 = 0; i2 < 5; i2++) { 
     if (touching[i2] == false) { 
      // Log.d(TAG, "Was Here" + String.valueOf(i2)); 
      xA[i2] = 0; 
      yA[i2] = 0; 
     } 
    } 

    x1 = xA[0]; 
    x2 = xA[1]; 
    x3 = xA[2]; 
    x4 = xA[3]; 

    y1 = yA[0]; 
    y2 = yA[1]; 
    y3 = yA[2]; 
    y4 = yA[3]; 

return true; 
} 

謝謝!

+0

與http://developer.android.com/reference/android/view/MotionEvent.html#getActionIndex%28%29嘗試讓每個行動指針 – zapl 2012-08-10 22:59:00

回答

0

我認爲擁有一個id的點是爲了讓你有一個一致的名稱來引用它。如果ID隨着指針計數而改變,則可能需要另一個身份識別系統。你可以創建一個指針ID數組,它獨立於指針數而被引用/更新。

+0

是啊,這是我的主意爲好,但我被困試圖在代碼中實現它。 – Eric 2012-08-10 23:05:37