2011-12-13 149 views
3

我刚学过OpenGL,并且正在开发使用OpenGL的游戏。我不知道如何实现OnTouch事件为图像&移动图像我使用OpenGL的文档实例OpenGLES 0.1,但理智最多做如何实现OnTouch事件

回答

1

默认情况下,你可以使用下面的代码处理的活动联系,

@Override 
     public boolean onTouch(View v, MotionEvent event) { 

      final float mouseSensitivity = 0.5f; 

      if(event.getAction()==MotionEvent.ACTION_DOWN){ 
       startX = event.getX(); 
       startY = event.getY(); 
      } else if(event.getAction()==MotionEvent.ACTION_UP){ 
       startX = 0.0f; 
       startY = 0.0f; 
      } else if(event.getAction()==MotionEvent.ACTION_MOVE){ 
       graphicsRenderer.rotate((startY - event.getY()) * mouseSensitivity,(startX - event.getX()) * mouseSensitivity); 
       startX = event.getX(); 
       startY = event.getY(); 
      } 

      return true; 
     } 

// Where startX and startY are global int variables; 

为了处理超过GLSurface查看是否这样,

class ClearGLSurfaceView extends GLSurfaceView { 
    public ClearGLSurfaceView(Context context) { 
     super(context); 
     mRenderer = new ClearRenderer(); 
     setRenderer(mRenderer); 
    } 

    public boolean onTouchEvent(final MotionEvent event) { 
     queueEvent(new Runnable(){ 
      public void run() { 
       mRenderer.setColor(event.getX()/getWidth(), 
         event.getY()/getHeight(), 1.0f); 
      }}); 
      return true; 
     } 

     ClearRenderer mRenderer; 
} 
1

请参见下面的代码 -

@Override 
public boolean onTouchEvent(MotionEvent event) 
{ 
    mX = (int) event.getX(); 
    mY = (int) event.getY(); 
    return super.onTouchEvent(event); 
} 

而且,按照此tutorial.它可以帮助你。

3

首先你实现覆盖方法onTouchMethod,然后你可以看到每一个动作的每一个动作,比如关于触摸的向下,向上和移动。

@Override 
    public boolean onTouch(View v, MotionEvent event) { 

     if(event.getAction()==MotionEvent.ACTION_DOWN){ 
      Log.i(TAG,"Action Down"); 
     } else if(event.getAction()==MotionEvent.ACTION_UP){ 
      Log.i(TAG,"Action Up"); 
     } else if(event.getAction()==MotionEvent.ACTION_MOVE){ 
      Log.i(TAG,"Action Move"); 
     } 
     return true; 
    }