3

OpenGl で単純なテクスチャ キューブを描画するコードがあります。

パンニング(平行移動)と回転機能も同様に実装しました。

これで、立方体モデルにピンチ ズームを実装するための次のコードができました。立方体をクリックしても何も起こらないので、どこに問題があるのか​​ わかりません。

private float mLastTouchX;
private float mLastTouchY;
private static final int INVALID_POINTER_ID = -1;
private int mActivePointerId = INVALID_POINTER_ID;

@Override
public boolean onTouchEvent(MotionEvent event) {
    final int action = event.getAction();
    switch (action & MotionEvent.ACTION_MASK) {
    case MotionEvent.ACTION_DOWN: {
        final float x = event.getX();
        final float y = event.getY();
        mLastTouchX = x;
        mLastTouchY = y;
        mActivePointerId = event.getPointerId(0);
        break;
    }
    case MotionEvent.ACTION_MOVE: {
        final int pointerIndex = event.findPointerIndex(mActivePointerId);
        final float x = event.getX(pointerIndex);
        final float y = event.getY(pointerIndex);
        final float dx = x - mLastTouchX;
        final float dy = y - mLastTouchY;
        mPosX += dx;
        mPosY += dy;
        mLastTouchX = x;
        mLastTouchY = y;
        invalidate();
        break;
    }
    case MotionEvent.ACTION_UP: {
        mActivePointerId = INVALID_POINTER_ID;
        break;
    }
    case MotionEvent.ACTION_CANCEL: {
        mActivePointerId = INVALID_POINTER_ID;
        break;
    }
    case MotionEvent.ACTION_POINTER_UP: {
        final int pointerIndex = (action & MotionEvent.ACTION_POINTER_INDEX_MASK) >> MotionEvent.ACTION_POINTER_INDEX_SHIFT;
        final int pointerId = event.getPointerId(pointerIndex);
        if (pointerId == mActivePointerId) {
            final int newPointerIndex = pointerIndex == 0 ? 1 : 0;
            mLastTouchX = event.getX(newPointerIndex);
            mLastTouchY = event.getY(newPointerIndex);
            mActivePointerId = event.getPointerId(newPointerIndex);
        }
        break;
    }
    }
    return true;
}

M は何日もこれに固執し、マルチタッチ ジェスチャを実装するための d リンクのいくつかもチェックしましたが、満足のいく応答は得られませんでした。前もって感謝します。

4

0 に答える 0