画面に触れたときにレンダーモードを RENDERMODE_WHEN_DIRTY から RENDERMODE_CONTINUOUSLY に変更したい。
必要なもの : 最初は、オブジェクトは静止している必要があります。画面に触れた後、自動的に移動するはずです。私のオブジェクトの動きは発射体の動きであり、正常に動作しています。
私が得るもの:強制的に閉じるとNULLポインター例外。
私のコード:
public class BallThrowGLSurfaceView extends 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:私はこれでいくつかのばかげた間違いを犯していることを知っていますが、それが実際に何であるかを理解することはできません.