android openGL if语句和onTouch事件的问题
我已经在Android openGL中创建了一个3D立方体,我可以使用onTouch事件打开X轴,但我想将其用作UI,例如,我正在尝试获取它,以便当一个面面对相机时,如果你轻触表面,它可以作为onClick监听器工作,但是我在用if语句检查面对摄像机的脸时遇到了问题,我的整个课程如下:android openGL if语句和onTouch事件的问题,android,opengl-es,if-statement,floating-point,Android,Opengl Es,If Statement,Floating Point,我已经在Android openGL中创建了一个3D立方体,我可以使用onTouch事件打开X轴,但我想将其用作UI,例如,我正在尝试获取它,以便当一个面面对相机时,如果你轻触表面,它可以作为onClick监听器工作,但是我在用if语句检查面对摄像机的脸时遇到了问题,我的整个课程如下: public class GLCubeEx extends Activity { GLSurfaceView ourSurface; GLCubeEx This = this; public void
public class GLCubeEx extends Activity {
GLSurfaceView ourSurface;
GLCubeEx This = this;
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
ourSurface = new GLSurfaceView(this);
ourSurface.setRenderer(new GLCubeRenderer());
setContentView(ourSurface);
}
public boolean onTouchEvent(MotionEvent event) {
float touchedX = 0;
float touchedY = 0;
Button btn = new Button(this);
LinearLayout.LayoutParams paramsd = new LinearLayout.LayoutParams
(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
paramsd.height = 60;
paramsd.width = 120;
btn.setLayoutParams(paramsd);
addContentView(btn, paramsd);
if (event.getAction() == MotionEvent.ACTION_DOWN){
GLCubeRenderer.xAngle = (touchedX - event.getX())/2f;
GLCubeRenderer.yAngle = (touchedY - event.getY())/2f;
} else if (event.getAction() == MotionEvent.ACTION_MOVE){
GLCubeRenderer.xAngle = (touchedX - event.getX())/2f;
GLCubeRenderer.yAngle = (touchedY - event.getY())/2f;
touchedX = event.getX();
touchedY = event.getY();
}
**EDIT here, thaks to Laurence pointing out**
if(GLCubeRenderer.xAngle > -118f && GLCubeRenderer.xAngle < -65f){
btn.setText("working");
}
String s = Float.toString(GLCubeRenderer.xAngle);
btn.setText(s);
return true;
}
public void onPause() {
super.onPause();
ourSurface.onPause();
}
public void onResume() {
super.onResume();
ourSurface.onResume();
}
公共类GLCubeEx扩展活动{
GLSURFACHEVIEW我们的表面;
GLCubeEx This=此;
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
ourSurface=新GLSurfaceView(本);
setRenderer(新的glcubernderer());
setContentView(ourSurface);
}
公共布尔onTouchEvent(运动事件){
float-touchedX=0;
float-touchedY=0;
按钮btn=新按钮(此按钮);
LinearLayout.LayoutParams paramsd=新的LinearLayout.LayoutParams
(LayoutParams.WRAP_内容,LayoutParams.WRAP_内容);
参数SD.高度=60;
paramsd.width=120;
btn.setLayoutParams(paramsd);
addContentView(btn,paramsd);
if(event.getAction()==MotionEvent.ACTION\u向下){
glcuberender.xAngle=(touchedX-event.getX())/2f;
glcuberender.yAngle=(touchedY-event.getY())/2f;
}else if(event.getAction()==MotionEvent.ACTION\u MOVE){
glcuberender.xAngle=(touchedX-event.getX())/2f;
glcuberender.yAngle=(touchedY-event.getY())/2f;
touchedX=event.getX();
touchedY=event.getY();
}
**编辑这里,萨克斯向劳伦斯指出**
if(GLCubeRenderer.xAngle>-118f&&GLCubeRenderer.xAngle<-65f){
btn.setText(“工作”);
}
字符串s=Float.toString(glcubernderer.xAngle);
btn.setText(s);
返回true;
}
公共无效暂停(){
super.onPause();
onPause();
}
恢复时公开作废(){
super.onResume();
onResume();
}
}
我遇到的问题是,我的运动事件中的if语句没有被触发,该语句检查变量xAngle(它是在滑动屏幕时创建并用于旋转立方体的浮点)是否在两个值之间,btn是应用程序中显示xAngle值的按钮,我无法理解为什么它没有被触发,我没有看到任何想法或明显的解决方案?这是不可能的:
GLCubeRenderer.xAngle < -118f && GLCubeRenderer.xAngle > -65f
glcubernderer.xAngle<-118f&&glcubernderer.xAngle>-65f
你可能是说:
GLCubeRenderer.xAngle > -118f && GLCubeRenderer.xAngle < -65f
glcubernderer.xAngle>-118f&&glcubernderer.xAngle<-65f
每次触摸都会将按钮的文本设置为角度,您如何检查您的if语句是否正在执行,因为在您将文本设置为工作状态后,会立即将其设置为角度,我不确定,只是此处的一些输入。您是否尝试在调试器中运行此操作,或者甚至记录一些值以查看发生了什么?耶,我正在记录这些值,并使用断点运行eclipse调试工具,但我仍然无法触发它。是的,但它仍然没有解决我的问题,这很奇怪,我相信当我在if语句的参数范围内旋转立方体并离开它时,它会设置按钮的文本。我应该不会太难,但这是一个非常好的点,我会将它改为记录一些字符串数据。我尝试了,它正在工作!只是onclickListener上的按钮可能不是因为它在onTouch事件中,所以我需要触摸立方体并按下按钮?是的,如果答案是正确的,请不要忘记标记答案,并放弃你在浏览此网站时使用的所有信息,因为这个原因,我有一段时间不被允许提问