1

当我触摸屏幕时,我想将渲染模式从 RENDERMODE_WHEN_DIRTY 更改为 RENDERMODE_CONTINUOUSLY。

我需要什么:最初对象应该是静止的。触摸屏幕后,它应该会自动移动。我的物体的运动是抛射运动,它工作正常。

我得到了什么:强制关闭和 NULL 指针异常。

我的代码:

公共类 BallThrowGLSurfaceView 扩展 GLSurfaceView{

MyRender _renderObj;
Context context;
GLSurfaceView glView;

public BallThrowGLSurfaceView(Context context) {
    super(context);
    // TODO Auto-generated constructor stub
    _renderObj = new MyRender(context);
    this.setRenderer(_renderObj);
    this.setRenderMode(RENDERMODE_WHEN_DIRTY);
    this.requestFocus();
    this.setFocusableInTouchMode(true);
    glView = new GLSurfaceView(context.getApplicationContext());
}

@Override
public boolean onTouchEvent(MotionEvent event) {
    // TODO Auto-generated method stub
    if (event != null)
    {
        if (event.getAction() == MotionEvent.ACTION_DOWN)
        {
            if (_renderObj != null)
            {   Log.i("renderObj", _renderObj + "lll");
                // Ensure we call switchMode() on the OpenGL thread.
                // queueEvent() is a method of GLSurfaceView that will do this for us.
                queueEvent(new Runnable()
                {
                    public void run()
                    {
                        glView.setRenderMode(RENDERMODE_CONTINUOUSLY);      
                    }
                });
                return true;
            }
        }
    }
    return super.onTouchEvent(event);   
}

}

PS:我知道我在这方面犯了一些愚蠢的错误,但无法弄清楚它到底是什么。

4

0 回答 0