Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/190.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java中的openGL:使用TouchEvent移动相机_Java_Android_Opengl Es_Android Camera_Touch Event - Fatal编程技术网

java中的openGL:使用TouchEvent移动相机

java中的openGL:使用TouchEvent移动相机,java,android,opengl-es,android-camera,touch-event,Java,Android,Opengl Es,Android Camera,Touch Event,我需要通过触摸屏创建相机的x、y轴移动/改变位置。我已经阅读了前面的许多问题,但是没有人注意到可以解决我问题的东西 如何使用此代码?: class ESSurfaceView extends GLSurfaceView { private final float TOUCH_SCALE_FACTOR = 180.0f / 320; private float mPreviousX; private float mPreviousY; @Override public boolean onTo

我需要通过触摸屏创建相机的x、y轴移动/改变位置。我已经阅读了前面的许多问题,但是没有人注意到可以解决我问题的东西

如何使用此代码?:

class ESSurfaceView extends GLSurfaceView {

private final float TOUCH_SCALE_FACTOR = 180.0f / 320;
private float mPreviousX;
private float mPreviousY;

@Override
public boolean onTouchEvent(MotionEvent e) {

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

    switch (e.getAction()) {
        case MotionEvent.ACTION_MOVE:

            float dx = x - mPreviousX;
            float dy = y - mPreviousY;

            if (y > getHeight() / 2) {
                dx = dx * -1 ;
            }

            if (x < getWidth() / 2) {
                dy = dy * -1 ;
            }

            GLRenderer.setAngle(
                    GLRenderer.getAngle() +
                            ((dx + dy) * TOUCH_SCALE_FACTOR));
            requestRender();
    }

    mPreviousX = x;
    mPreviousY = y;
    return true;
}

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

    setEGLContextClientVersion(2);
    GLRenderer renderer = new GLRenderer();
    setRenderer(renderer);

    // Render the view only when there is a change in the drawing data
    //setRenderMode(GLSurfaceView.RENDERMODE_WHEN_DIRTY);
}}
class ESSurfaceView扩展了GLSurfaceView{
私人最终浮动接触比例系数=180.0f/320;
私人浮动MPX;
私家车;
@凌驾
公共事件(运动事件e){
float x=e.getX();
float y=e.getY();
开关(如getAction()){
case MotionEvent.ACTION\u移动:
浮点数dx=x—mPreviousX;
浮动dy=y-mPreviousY;
如果(y>getHeight()/2){
dx=dx*-1;
}
if(x
官方Android培训有一个例子(与您的基本相同): 它还提供了完整的源代码

顺便说一句,你永远不会在openGL中移动相机,你会移动世界。 如需进一步了解,请阅读: 这会让你更好地理解事情是如何运作的