当我触摸屏幕时,我想将渲染模式从 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:我知道我在这方面犯了一些愚蠢的错误,但无法弄清楚它到底是什么。