在android中我举了一个旋转球体的例子在这里给出 https://bitbucket.org/jimcornmell/opengltexturedsphere。它创建了一个简单的应用程序,显示一个旋转球体(地球)。
现在,如果在手机显示屏上按下旋转球体,我想做一些事情。我不想对触摸事件做出反应outside的旋转球体。这是我到目前为止所尝试的,通过使用的派生版本GLSurfaceView
:
public class MyGLSurfaceView extends GLSurfaceView {
MyGLSurfaceView(Context context) {
super(context);
}
public boolean onTouchEvent(MotionEvent event) {
int x = (int)event.getX();
int y = (int)event.getY();
Log.d("onTouchEvent",String.format("keyCode: %d coords: %d %d", event.getActionMasked(), x, y));
Renderer renderer = this.Renderer.getRenderer(); // ERROR
return super.onTouchEvent(event);
}
}
如果没有 ERROR 行,此代码就可以工作,当我按下显示屏时,我会得到 x/y 坐标。
然而,为了评估该事件是否within球体,我的方法是获取具有以下内容的渲染器Sphere
对象来确定 x/y 坐标是否在球体内。
但 ERROR 行不起作用,我收到一条错误消息
Error:(26, 56) error: cannot find symbol method getRenderer()
我该如何修复这个错误;或者是否有更明智的方法来自动查明该事件是否在Sphere
-图形对象?
也许更改构造函数并将渲染器实例传递给MyGLSurfaceView
还有?附录:这个想法似乎行不通。我收到一个构造函数错误,我不明白......