2014-12-07 29 views
0

我正在從事Android的2D平臺遊戲,我在觸摸事件方面遇到了一些麻煩。 這是我的代碼:在遊戲中觸摸運動的錯誤

public boolean onTouch(MotionEvent e, int scaledX, int scaledY) { 
    if (e.getAction() == MotionEvent.ACTION_DOWN) { 
     for (int i = 0; i < object.size(); i++) { 
      tempObject = object.get(i); 
      if (tempObject.getId() == ObjectId.Player) { 
       if (moveRight.contains(scaledX, scaledY)) { 
        Log.d("PlayState", "Move button is pressed!"); 
        tempObject.setMovingRight(true); 

       } else { 
        tempObject.setMovingRight(false); 
       } 

      } 
     } 
    } 
    if (e.getAction() == MotionEvent.ACTION_UP) { 
     for (int i = 0; i < object.size(); i++) { 
      tempObject = object.get(i); 
      if (tempObject.getId() == ObjectId.Player) { 
       if (moveRight.contains(scaledX, scaledY)) { 
        Log.d("PlayState", "Move button is released!"); 
        tempObject.setMovingRight(false); 

       } 
      } 
     } 
    } 
    return true; 
} 

當我觸摸矩形,並釋放它的偉大工程的矩形內。問題是,如果我觸摸矩形並在觸摸的同時將手指移動到其他地方,則角色會繼續移動。我的問題是,如何編程它,使得「移動右側」僅在矩形內發生觸摸時才爲真。 謝謝! :)

回答

0

您可以setMovingRight(false)e.getAction() == MotionEvent.ACTION_OUTSIDEHere你可以找到所有可能的列表MotionEvents

最簡單的方法將是本聲明if (e.getAction() == MotionEvent.ACTION_UP)更改爲if (e.getAction() == MotionEvent.ACTION_UP || e.getAction() == MotionEvent.ACTION_OUTSIDE)

這將工作僅當View你已經附加了onTouchEvent(...)的不是更大然後是玩家的矩形。如果View是長大了,你可以嘗試改變

if (e.getAction() == MotionEvent.ACTION_DOWN)if (e.getAction() == MotionEvent.ACTION_DOWN || e.getAction() == MotionEvent.MOVE)

+0

我試圖像你說的改變語句,但它並沒有解決這個問題.. – Guy 2014-12-07 20:02:22