###前提・実現したいこと
友達からAndroidアプリのプログラムをもらい、そのアプリの機能を追加しようと考えています。
もらったアプリというのが値を入力したファイルを作成し、そのファイルを読み込んで計算させたのちに
計算したデータを基に立方体を表示(点・線・実体)するというものです。
表示した図形を回転させたりピンチアウト・ピンチインで拡大縮小することができるようになっています。
それでここからが本題なのですが回転の機能はそのまま残しておきたいものの
拡大縮小をピンチアウト・ピンチインではない方法にしてみたいので
まずはプログラムのズーム機能の部分を無効化しようと思いました。
そのため下記にあるソースコード内の
「MotionEvent.ACTION_MOVE」のelse以降(ズーム制御と書いてあるところ以降)をコメントアウトしてみたのですが
実機で確かめてみると普通にピンチアウト・ピンチインでズームができてしまいます。
どのようにすればタッチスクロールの回転だけ残して
ピンチアウト・ピンチインの拡大縮小を無効にできるでしょうか。
よろしくお願いします。
###該当のソースコード
タッチ操作のプログラムは以下の感じです。
java
1public class MyGLView extends GLSurfaceView { 2 MyRenderer myRenderer; 3 4 public MyGLView(Context context) { 5 super (context); 6 myRenderer = new MyRenderer(); 7 setRenderer(myRenderer); 8 9 } 10 11 final float TOUCH_SCALE_FACTOR = 0.2f; 12 final float MULTI_TOUCH_SCALE_FACTOR = 0.01f; 13 private float mPreviousX0; 14 private float mPreviousY0; 15 private float mPreviousX1; 16 private float mPreviousY1; 17 18 @Override 19 public boolean onTouchEvent(MotionEvent event) { 20 int Action = event.getAction(); 21 int Count = event.getPointerCount(); 22 float X0 = event.getX(0); 23 float Y0 = event.getY(0); 24 float X1 = (Count >= 2) ? ((float)event.getX(1)) : X0; 25 float Y1 = (Count >= 2) ? ((float)event.getY(1)) : Y0; 26 switch (Action & MotionEvent.ACTION_MASK) { 27 case MotionEvent.ACTION_UP: 28 break; 29 case MotionEvent.ACTION_POINTER_UP: 30 break; 31 case MotionEvent.ACTION_MOVE: 32 if(Count == 1) { 33 //回転制御 34 float DX0 = X0 - mPreviousX0; 35 float DY0 = Y0 - mPreviousY0; 36 myRenderer.RotateX += DX0 * TOUCH_SCALE_FACTOR; 37 myRenderer.RotateY += DY0 * TOUCH_SCALE_FACTOR; 38 39 }else{ 40 //ズーム制御 41 float DX = X0 - X1; 42 float DY = Y0 - Y1; 43 float PreviousDX = mPreviousX0 - mPreviousX1; 44 float PreviousDY = mPreviousY0 - mPreviousY1; 45 float SquareDX = DX * DX; 46 float SquareDY = DY * DY; 47 float SquarePreviousDX = PreviousDX * PreviousDX; 48 float SquarePreviousDY = PreviousDY * PreviousDY; 49 float RootSquareDXY = (float) Math.sqrt(SquareDX + SquareDY); 50 float RootSquarePreviousDXY = (float) Math.sqrt(SquarePreviousDX + SquarePreviousDY); 51 if (myRenderer.TrancelateZ > 10.0f) { 52 myRenderer.TrancelateZ = 10.0f; 53 }else{ 54 myRenderer.TrancelateZ += (RootSquareDXY - RootSquarePreviousDXY) * MULTI_TOUCH_SCALE_FACTOR; 55 } 56 } 57 } 58 mPreviousX0 = X0; 59 mPreviousY0 = Y0; 60 mPreviousX1 = X1; 61 mPreviousY1 = Y1; 62 return true; 63 } 64 65} 66
###試したこと
上記のプログラムの「ズーム制御」以降をコメントアウトで無効化
###補足情報(言語/FW/ツール等のバージョンなど)
OpenGL ES 1.0
Java
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。