onTouchイベントを使用してX軸をオンにできる3DキューブをAndroidopenGLで作成しましたが、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();
}
}
私が抱えている問題は、変数xAngle(画面をスワイプしてキューブを回転させるために使用されるときに作成されるフロート)が2つの値の間にあるかどうかをチェックするモーションイベントのifステートメントがトリガーされていないことです。btnはxAngleの値を表示するアプリのボタンですが、見たことのないアイデアや明らかな解決策がトリガーされない理由がわかりません。