2012-08-03 61 views
0

我爲我的android遊戲使用opengl es。我想抓住x和y的位置。我跟着一堆不同的教程,一切都會導致相同的結果:我無法從中得到任何東西。這個方法甚至不是我覺得奇怪的。所以,這裏是我的GLSurfaceView類android ontouchevent opengl

class OpenGLES10SurfaceView extends GLSurfaceView { 

    //private final float TOUCH_SCALE_FACTOR = 180.0f/320; 
    public OpenGLES10Renderer mRenderer; 
    //static private float mPreviousX; 
    //static private float mPreviousY; 
    private static float _x; 
    private static float _y; 

    public OpenGLES10SurfaceView(Context context){ 
     super(context); 

     // set the mRenderer member 
     mRenderer = new OpenGLES10Renderer(context); 
     setRenderer(mRenderer); 

     // Render the view only when there is a change 
     setRenderMode(GLSurfaceView.RENDERMODE_WHEN_DIRTY); 
    } 
    @Override 
     public boolean onTouchEvent(MotionEvent e) { 
      // MotionEvent reports input details from the touch screen 
      // and other input controls. In this case, you are only 
      // interested in events where the touch position changed. 

      float x = e.getX(); 
      float y = e.getY(); 

      switch (e.getAction()) { 
      case MotionEvent.ACTION_DOWN: 
             mRenderer.setX(x); 
             return true; 

      } 

    } 
    } 

我不能找到個到底是不對的,所以如果你能幫助這將極大地appriciated。如果您需要編碼部分代碼,請說明。

+0

你記得在你的視圖上設置OnTouchListener嗎? – JoxTraex 2012-08-03 00:40:34

+0

你能否在你的活動中包含你設置contentview的部分?另外,請嘗試在活動中添加一個onTouchEvent(),如果沒有任何視圖使用該事件,則應該接收該事件,這可以幫助您調試問題。 – Aert 2012-08-03 02:58:31

回答

0

試試這個:

@Override 
public boolean onTouchEvent(MotionEvent event) { 

     float x = e.getX(); 
     float y = e.getY(); 

    switch (event.getAction() & MotionEvent.ACTION_MASK) { 
     case MotionEvent.ACTION_DOWN: 
      mRenderer.setX(x); 
      requestRender(); 
      break; 
     case MotionEvent.ACTION_UP:   
      break; 
     case MotionEvent.ACTION_POINTER_DOWN:    
      break; 
     case MotionEvent.ACTION_POINTER_UP: 
      break; 
     case MotionEvent.ACTION_MOVE:  
      break; 
    } 


    return true; 
    } 

我的情況下添加其他操作,你需要他們。希望有所幫助。

+0

仍然沒有做任何事情。我也嘗試使用默認值:mRenderer.setX(x);但它也沒有工作 – ThargtG 2012-08-03 00:56:16

+0

看看我的編輯,你可能忘了添加'requestRender();' – 0gravity 2012-08-03 01:02:19

+0

不,沒有任何改變。但事情是,onTouchEvent(MotionEvent事件)甚至沒有叫.. – ThargtG 2012-08-03 01:16:48