如何实现OnTouch事件

3

我最近学习了OpenGL,并正在使用OpenGL开发游戏。我不知道如何将OnTouch事件实现到图像中并移动图像。我使用了OpenGL文档示例OpenGLES 0.1,但没有什么效果。

3个回答

1
请看下面的代码 -
@Override
public boolean onTouchEvent(MotionEvent event) 
{
    mX = (int) event.getX();
    mY = (int) event.getY();
    return super.onTouchEvent(event);
}

而且,跟随这个教程。它可以帮助你。


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

0
首先你需要实现重写onTouchMethod方法,然后你会看到每一个动作,比如按下(down)、抬起(up)和移动(move),都与触摸(touch)有关。
 @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;
    }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接