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 に答える