2017-07-18 67 views
0

我的問題可能很奇怪,但我不明白爲什麼我的場景正在回退,如果我在其他地方觸摸屏幕,請幫我弄清楚。OnTouchEvent,我的場景回去,如果我觸摸場景中的某個地方

https://youtu.be/oKdwqn0HC0Y - 在這個視頻記錄了我的問題, 爲了更好地理解這個問題

@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; 
     } 

回答

0

我解決我的問題這樣

@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; 
    }