Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/204.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
android openGL if语句和onTouch事件的问题_Android_Opengl Es_If Statement_Floating Point - Fatal编程技术网

android openGL if语句和onTouch事件的问题

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

我已经在Android openGL中创建了一个3D立方体,我可以使用onTouch事件打开X轴,但我想将其用作UI,例如,我正在尝试获取它,以便当一个面面对相机时,如果你轻触表面,它可以作为onClick监听器工作,但是我在用if语句检查面对摄像机的脸时遇到了问题,我的整个课程如下:

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事件中,所以我需要触摸立方体并按下按钮?是的,如果答案是正确的,请不要忘记标记答案,并放弃你在浏览此网站时使用的所有信息,因为这个原因,我有一段时间不被允许提问