2012-08-28 20 views
0

我正在使用MotionEventMatrix來拖動我的位圖,而是位圖獲取「翻譯」到附近區域(大多數時間按相反的方向)。我希望能夠使用Matrix翻譯將其拖動。這是我的代碼。畫布MotionEvent,位圖不會按預期方式拖動

switch(action){ 
     case MotionEvent.ACTION_DOWN: { 
      final float touchX = event.getX(); 
      final float touchY = event.getY(); 
      //check to see if the user is pressing at most 80 pixels far from the bitmap 
      if(((Math.abs(touchX - player.prevX)<=80) && ((Math.abs(touchY - player.prevY)<=80)))){ 
       //if so then proceed to drag it to a new location 
       player.isDraggable = true; 
      } 
      break; 
     } 
     case MotionEvent.ACTION_MOVE: { 
      if(player.isDraggable){ 
       player.x = event.getX(); 
       player.y = event.getY();      
       float dx = player.x - player.prevX, dy = player.y - player.prevY; 
       player.matrix.postTranslate(dx, dy); 
       player.prevX = player.x; 
       player.prevY = player.y; 
       player.isDraggable = false; 
     } 
      break; 
     } 
    } 
public void draw(Canvas canvas) {  
     canvas.drawBitmap(background, 0, 0, null); 
     canvas.drawBitmap(player.bmp, player.matrix, null); 
     for(int i=0;i<particles.size();i++){ 
      particles.get(i).drawShower(canvas); 
     }  

} 

回答

0
  1. onTouch()方法應該返回true能夠得到 從MotionEvent連續值。
  2. 當試圖拖動圖像時,您立即將isDraggable屬性設置爲 false。之後,你會檢查每一次,如果它是真的,但它不會。我不知道,背後的邏輯是什麼,但嘗試別的!
+0

感謝您的回答。問題不是1,而是實際上2.你是對的。現在,我通過來自不同類的函數調用來調用'player.isDraggable = false'(而不是立即將其設置爲false),以便現在它被正確拖動 – jmishra