0

我是 android 游戏开发的新手,非常感谢您的帮助。我想在画布上画一些应该比屏幕大得多的图形。所以一些缩放和移动会很棒。我读过一些问题,但他们通常只回答一些细节 - 而不是整个概念。

我试过用相机

cam.save();
cam.translate(0f, 0f, -8f);
cam.applyToCanvas(canvas);
cam.restore();

这可以完美缩放,但我无法解码真正的触摸坐标。

我不想使用openGL(它有点矫枉过正,而且我想从简单的开始)

无论如何,我也尝试了 canvas.scale(int, int),但没有奏效。我相信相机是正确的方式,但我迷路了。

所以问题是:如何确定实坐标?此外,如果有人可以分享一段教程等或一些使用画布转换的概念,那就太好了。(或者也许有更合适的方法来解决它)

提前致谢

4

1 回答 1

1

你必须覆盖 onTouchEvent

@Override
     public boolean onTouchEvent(MotionEvent event) {
         float x = event.getX();
         float y = event.getY();

         switch (event.getAction()) {
             case MotionEvent.ACTION_DOWN:
                 touch_start(x, y);
                 invalidate();
                 break;
             case MotionEvent.ACTION_MOVE:
                 touch_move(x, y);
                 invalidate();
                 break;
             case MotionEvent.ACTION_UP:
                 touch_up();
                 invalidate();
                 break;
         }
         return true;
     }



 private void touch_start(float x, float y) {
        mPath.reset();
        mPath.moveTo(x, y);
        mX = x;
        mY = y;
    }

     private void touch_move(float x, float y) {
         float dx = Math.abs(x - mX);
         float dy = Math.abs(y - mY);
         if (dx >= TOUCH_TOLERANCE || dy >= TOUCH_TOLERANCE) {
             mPath.quadTo(mX, mY, (x + mX)/2, (y + mY)/2);
             mX = x;
             mY = y;
         }
     }
     private void touch_up() {
         mPath.lineTo(mX, mY);
         // commit the path to our offscreen
         mCanvas.drawPath(mPath, mPaint);
         // kill this so we don't double draw
         mPath.reset();
     }
于 2013-02-27T03:53:15.753 回答