0

我正在为我的 android 游戏使用 opengl es。我想抓住 x 和 y 的位置。我遵循了一堆不同的教程,一切都导致了相同的结果:我无法从中得到任何东西。该方法甚至没有被调用,我觉得很奇怪。所以,这是我的 GLSurfaceView 类

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;

            }

    }
    }

我找不到这到底有什么问题,所以如果你能提供帮助,那将是非常感激的。如果您需要她的部分代码,请说出来。

4

1 回答 1

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

如果您需要,我添加了其他操作。希望有帮助。

于 2012-08-03T00:37:51.040 回答