2013-02-24 89 views
0

我是在Android遊戲開發newbee,我將不勝感激您的幫助。我想在畫布上繪製一些圖形,該圖形應該比屏幕大。所以一些縮放和移動會很棒。我讀過一些問題,但他們通常只回答一些細節 - 而不是整個概念。畫布遊戲中的縮放(確定真正的觸摸座標)

我試過用相機

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

這完全擴展,但我無法真正觸摸座標進行解碼。

我不想使用OpenGL(這是矯枉過正,也是我想開始與一些較爲簡單)

不管怎樣,我試了canvas.scale(INT,INT)爲好,但沒沒有工作。我相信相機是正確的方式,但我迷路了。

所以問題是:如何確定真正的座標?此外,如果有人可以分享一段教程等或使用畫布轉換的概念,那將會很好。 (也許有更合適的方式如何解決它)提前

+0

沒有人知道?我絕望 – petrbel 2013-02-25 09:33:29

+0

你想知道在哪裏觸摸畫布 – 2013-02-26 11:50:21

+0

是的,精確地 – petrbel 2013-02-26 15:36:02

回答

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