3

我正在尝试添加捏合以放大我的 3D 视图,但它不起作用。旋转有效,但不能缩放。

我也尝试过 ACTION_POINTER1_UP/DOWN,但这是失败的

这是我的代码:

@Override
public boolean onTouchEvent(MotionEvent event) {

     if(event.getPointerCount() > 1)
        {
            int x1 = (int) event.getX(0);
            int y1 = (int) event.getY(0);
            int x2 = (int) event.getX(1);
            int y2 = (int) event.getY(1);
            d = Math.sqrt((x1-x2)^2+(y1-y2)^2);
        }

    switch (event.getAction()) {
    case MotionEvent.ACTION_DOWN:
        rotating = true;
        break;
    case MotionEvent.ACTION_UP:
        rotating = true;
        prevSwipeY = swipeY = 0; // for the Y axis
        prevSwipeX = swipeX = 0; // for the X axis
        break;

    case MotionEvent.ACTION_MOVE:
        float directionY = (prevSwipeY - event.getX()) * -1;
        float directionX = (prevSwipeX - event.getY()) * -1;
        swipeY = (int) (directionY * ROTATION_SPEED);
        swipeX = (int) (directionX * ROTATION_SPEED);
        if(event.getPointerCount() > 1)
        {
            int x1 = (int) event.getX(0);
            int y1 = (int) event.getY(0);
            int x2 = (int) event.getX(1);
            int y2 = (int) event.getY(1);
            d2 = Math.sqrt((x1-x2)^2+(y1-y2)^2);
            r = d2/d;
        }
        break;

    }

    // Camera pivot point is different
    prevSwipeY = (int) event.getX();
    prevSwipeX = (int) event.getY();
    return super.onTouchEvent(event);
}

@Override
public void updateScene() {
    if (faceObject3D != null) { // If an object is loaded
        if (swipeY != 0) // and we did swiped in the correct direction
            faceObject3D.rotation().y += swipeY;

        swipeY = 0; // Reset the pointer

        if (swipeX != 0) // and we did swiped in the correct direction
            faceObject3D.rotation().x += swipeX;

        swipeX = 0; // Reset the pointer


        if(r != 0) {faceObject3D.scale().x = faceObject3D.scale().y = faceObject3D.scale().z = (float) (r*2.0f);};

    }
}

你知道缺少什么吗?

4

0 回答 0