2011-04-07 25 views
0

我已經搜尋過試圖爲此尋找答案的互聯網,但是我所讀過的所有教程似乎都會讓我的小問題複雜化。基本上,如果您在屏幕左側上下拖動手指,並在屏幕右側的任意位置觸摸導彈並觸發導彈,則屏幕左側會有一艘船上下移動。適用於Android的簡單多點觸控編程

public boolean onTouchEvent(MotionEvent event) 
{ 
    if (event.getX() < getWidth()/2) 
    { 
     if (shipY < event.getY()) 
      shipY = shipY + 10; 
     if(shipY > event.getY()) 
      shipY = shipY - 10; 
    } 

    if (event.getX() >= getWidth()/2) 
    { 
     if(!missile) 
     { 
      missile = true; 
      missileY = shipY; 
      missileX = shipX; 
     } 
    } 
    return true; 
} 

現在我只能在發射導彈的時候停止移動船隻。非常感謝!

回答

0

我促成了這一問題,昨天的解釋:Touch more one button at once

TL; DR - 不能同時觸摸兩個視圖。您需要將它們組合到自定義ViewGroup中,並在您想要在多個View對象上完成併發觸摸時自行分派觸摸事件。

0

如果您的艦船和導彈碰巧處於同一個視圖中,那麼您可以將onTouchListener添加到該視圖中,以處理多點觸摸。 (這將是你自己的類,它實現View.onTouchListener)

這裏的方法的框架,你需要在onTouchListener覆蓋:

@Override 
    public boolean onTouch(View v, MotionEvent event) { 
     switch(event.getAction() & MotionEvent.ACTION_MASK) { 

     case MotionEvent.ACTION_DOWN: 
      //first finger went down 
      break; 

     case MotionEvent.ACTION_MOVE: 
      //a touch placement has changed 
      break; 

     case MotionEvent.ACTION_UP: 
      //first finger went up 
      break; 

     case MotionEvent.ACTION_CANCEL: 
      //gesture aborted (I think this means the finger was dragged outside of the touchscreen) 
      break; 

     case MotionEvent.ACTION_POINTER_DOWN: 
      //second finger (or third, or more) went down. 
      break; 

     case MotionEvent.ACTION_POINTER_UP: 
      //second finger (or more) went up. 
      break; 

      default: break; 
     } 
     return true; 
    } 

你可以在這些情況下,更詳細(和其他你可能想要使用的)在http://developer.android.com/reference/android/view/MotionEvent.html

關於您如何處理您的邏輯 - 在理智玩法的情況下,您的ACTION_DOWN或「第一手指」可能對應於玩家觸摸船隻,以及ACTION_POINTER_DOWN他們想要拍攝導彈。但請記住處理玩家可能首先觸摸屏幕的「導彈側」的情況,然後觸摸船舶以後再移動。