0

我已经绘制了 3D 对象。现在我想做放大/缩小并通过 2 个手指手势移动对象。

我检查了许多链接来做手势,opengl但没有得到太多帮助。

代码:

@Override
public boolean onTouchEvent(MotionEvent event) {
    //
    float x = event.getX();
    float y = event.getY();

    //If a touch is moved on the screen
    if(event.getAction() == MotionEvent.ACTION_MOVE) {
        //Calculate the change
        float dx = x - oldX;
        float dy = y - oldY;
        //Define an upper area of 10% on the screen
        int upperArea = this.getHeight() / 10;

        //Zoom in/out if the touch move has been made in the upper
        if(y < upperArea) {
            z -= dx * TOUCH_SCALE / 2;

        //Rotate around the axis otherwise
        } else {                
            xrot += dy * TOUCH_SCALE;
            yrot += dx * TOUCH_SCALE;
        }        
    //A press on the screen
    } else if(event.getAction() == MotionEvent.ACTION_UP) {

    }

    //Remember the values
    oldX = x;
    oldY = y;

    //We handled the event
    return true;
}

请帮助我提前谢谢。

4

1 回答 1

1

OpenGL 的唯一目的是绘制东西。这就像铅笔和钢笔在操作系统提供的一张纸上作画一样。OpenGL 不提供用户输入处理。此外,OpenGL 不是场景图,即它不管理其中包含对象的场景。它将点、线或三角形绘制到帧缓冲区,仅此而已。

因此,您必须使用通常的 Android 用户交互界面来更改程序的某些内部状态并触发场景的完整重绘以反映更改。

于 2013-07-17T07:21:59.557 回答