2013-03-02 9 views
5

libgdxを使用して画面の中央に画像を表示しました。私が左にスワイプすると画像はになります。に移動し、右の画像をスワイプするとに移動しますAndroid libgdxスワイプジェスチャリスナーを使用した左右の検出

その後、左にスワイプすると画像が左に移動します。同じことが正しいのです。私はGestureListenerを使用しました。

左にスワイプして最初の画像が左に移動すると、ある意味では機能します。しかし、その後、私は右にスワイプしようとすると、画像はまだ左に移動します。

どのように私はlibgdxでこれを克服するのですか?

class MyGestureListener implements GestureListener { 

     @Override 
     public boolean fling(float arg0, float arg1, int arg2) { 
      // TODO Auto-generated method stub 


       if(arg0>0) 
       iX += 20; 
       else 
      // else if(arg0*100>iX) 
        iX-=20; 
       System.out.println("Hello..............."+iX); 
      return true; 
     } 

    Gdx.input.setInputProcessor(new GestureDetector(0.0f, 0.0f,0.0f, 5f,new MyGestureListener())); 

    batch.draw(splashTexture, iX, iY); 
+0

は、あなたのコードスニペット... –

+0

を投稿することができますあなたは、[この古い記事] [1] [1]から答える得ることができます/ questions/937313/android-basic-gesture-detection –

+0

これはlibgdxで動作しますか? – Raghunandan

答えて

4

このリンクでは例を使用しました。 https://github.com/libgdx/libgdx/blob/master/tests/gdx-tests/src/com/badlogic/gdx/tests/GestureDetectorTest.java。 http://stackoverflow.com:

@Override 
    public boolean fling(float velocityX, float velocityY, int button) { 
     if(Math.abs(velocityX)>Math.abs(velocityY)){ 
       if(velocityX>0){ 
         iX+=20;//x cordinate 
       }else if (velocityX<0){ 
         iX-=20; 
       } else { 
       // Do nothing. 
       } 
     }else{ 

      // Ignore the input, because we don't care about up/down swipes. 
     } 
return true; 
} 
+5

なぜこれがダウン表示されますか? – Raghunandan

0
public class Test extends Activity{ 

private GestureDetector gesturedetector = null; 

View layout; 

@Override 

public void onCreate(Bundle savedInstanceState) { 

super.onCreate(savedInstanceState); 

setContentView(R.layout.test); 

layout = (LinearLayout)findViewById(R.id.container); 

gesturedetector = new GestureDetector(new MyGestureListener()); 

layout.setOnTouchListener(new OnTouchListener() { 

@Override 

public boolean onTouch(View v, MotionEvent event) { 

gesturedetector.onTouchEvent(event); 

return true; 

} 

}); 

} 

public boolean dispatchTouchEvent(MotionEvent ev){ 

super.dispatchTouchEvent(ev); 

return gesturedetector.onTouchEvent(ev); 

} 

class MyGestureListener extends GestureDetector.SimpleOnGestureListener{ 

private static final int SWIPE_MIN_DISTANCE = 150; 

private static final int SWIPE_MAX_OFF_PATH = 100; 

private static final int SWIPE_THRESHOLD_VELOCITY = 100; 

@Override 

public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, 

float velocityY) { 

float dX = e2.getX()-e1.getX(); 

float dY = e1.getY()-e2.getY(); 

if (Math.abs(dY)<SWIPE_MAX_OFF_PATH && 

Math.abs(velocityX)>=SWIPE_THRESHOLD_VELOCITY && 

Math.abs(dX)>=SWIPE_MIN_DISTANCE) { 

if (dX>0) { 

Toast.makeText(getApplicationContext(), “Right Swipe”, Toast.LENGTH_SHORT).show(); 

} else { 

Toast.makeText(getApplicationContext(), “Left Swipe”, Toast.LENGTH_SHORT).show(); 

} 

return true; 

} else if (Math.abs(dX)<SWIPE_MAX_OFF_PATH && 

Math.abs(velocityY)>=SWIPE_THRESHOLD_VELOCITY && 

Math.abs(dY)>=SWIPE_MIN_DISTANCE) { 

if (dY>0) { 

Toast.makeText(getApplicationContext(), “Up Swipe”, Toast.LENGTH_SHORT).show(); 

} else { 

Toast.makeText(getApplicationContext(), “Down Swipe”, Toast.LENGTH_SHORT).show(); 

} 

return true; 

} 

return false; 

} 

} 

} 
+0

この回答はLibgdxではなく、バニラのAndroid用です。また、元の質問がまだしていないことは何もしません。 –

+0

説明はありません。コードの仕組みを説明して、尋ねられた問題を解決することができますか –

関連する問題