0

my question can be pretty strange, but I can not understand why my scene is moving back, if I touch the screen elsewhere, please help me figure it out.

https://youtu.be/oKdwqn0HC0Y - in this video record my problem, To better understand the problem

 @Override
        public boolean onTouchEvent(MotionEvent event) {
            final int action = event.getAction();
            if (action == MotionEvent.ACTION_DOWN) {
                return true;
            }
            switch (event.getPointerCount()) {
                case 3:
                    Log.e("Event", "PointerCount = " +event.getPointerCount());
                    return mScaleDetector.onTouchEvent(event);
                case 2:
                    Log.e("Event", "PointerCount = " +event.getPointerCount());
                    return doRotationEvent(event);
                case 1:
                    Log.e("Event", "PointerCount = " +event.getPointerCount());
                    return doMoveEvent(event);
            }
            return true;
        }

        private boolean doMoveEvent(MotionEvent event)
        {
            final int action = event.getAction();
            Log.e("doMoveEvent", "action = " +action);

            switch (action) {
                case MotionEvent.ACTION_DOWN: {
                    Log.e("doMoveEvent", "action_down");
                    final float x = event.getX();
                    Log.e("doMoveEvent", " x = " +x);
                    final float y = event.getY();
                    Log.e("doMoveEvent", " y = " +y);
                    // Remember where we started
                    mLastTouchX = x;
                    mLastTouchY = y;
                    break;
                }

                case MotionEvent.ACTION_MOVE: {
                    final float x = event.getX();
                    final float y = event.getY();
                        // Calculate the distance moved
                        final float dx = x - mLastTouchX;
                        final float dy = y - mLastTouchY;
                        Log.e("doMoveEvent", " DX = " +dx);
                        Log.e("doMoveEvent", " DY = " +dy);

                        renderer.angleX += dy;
                        renderer.angleY += dx;

                    mLastTouchX = x;
                    mLastTouchY = y;

                    // Invalidate to request a redraw
                    break;
                }

                case MotionEvent.ACTION_UP: {
                    mActivePointerId = INVALID_POINTER_ID;
                    break;
                }

                case MotionEvent.ACTION_CANCEL: {
                    mActivePointerId = INVALID_POINTER_ID;
                    break;
                }
            }
            return true;
        }
Phantômaxx
  • 37,901
  • 21
  • 84
  • 115
Vladimir
  • 11
  • 3

1 Answers1

0

I solved my problem this way

 @Override
    public boolean onTouchEvent(MotionEvent event) {
        final int action = event.getAction();
        if (action == MotionEvent.ACTION_DOWN) {
            final float x = event.getX();   //(NEW)
            final float y = event.getY();   //(NEW)

            mLastTouchX = x;    //(NEW)
            mLastTouchY = y;    //(NEW)
            return true;
        }
        switch (event.getPointerCount()) {
            case 3:
                Log.e("Event", "PointerCount = " +event.getPointerCount());
                return mScaleDetector.onTouchEvent(event);
            case 2:
                Log.e("Event", "PointerCount = " +event.getPointerCount());
                return doRotationEvent(event);
            case 1:
                Log.e("Event", "PointerCount = " +event.getPointerCount());
                return doMoveEvent(event);
        }
        return true;
    }
Vladimir
  • 11
  • 3