0
我正在使用MotionEvent
和Matrix
來拖動我的位圖,而是位圖獲取「翻譯」到附近區域(大多數時間按相反的方向)。我希望能夠使用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);
}
}
感謝您的回答。問題不是1,而是實際上2.你是對的。現在,我通過來自不同類的函數調用來調用'player.isDraggable = false'(而不是立即將其設置爲false),以便現在它被正確拖動 – jmishra