0

MotionEventビットマップをドラッグするためにとを使用しMatrixていますが、代わりにビットマップが近くの領域に「変換」されます (ほとんどの場合、プレスの反対方向)。マトリックスの翻訳を使用してドラッグできるようにしたいです。これが私のコードです。

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);
        }    

}
4

1 に答える 1

0
  1. onTouch()メソッドは、MotionEvent から継続的に値を取得できるように戻る必要がtrueあります。
  2. isDraggable画像をドラッグしようとすると、プレーヤーの属性をすぐに false に設定します。その後、毎回真偽を確認しますが、そうではありません。その背後にあるロジックは何なのかわかりませんが、何か他のことを試してみてください!
于 2012-08-28T09:03:05.267 に答える