2013-03-02 16 views
5

Ekranın ortasında libgdx ile bir görüntü gösterdim. Sola kaydırdığımda, resmin sola sola hareket etmesini ve eğer doğru görüntüyü kaydırmam gerekiyorsa sağa hareket et.Android libgdx hareket dinleyiciyi kullanarak sola ve sağa kaydırarak kaydırın

Sonraki takip eden sola doğru sola hareket ettirilmelidir. Aynısı için de aynısı olmalı. GestureListener kullandım.

Sola kaydırdığımda ilk görüntü hamlesinin sola kaldığı bir anlamda çalışır. Ama bundan sonra doğru kaydırmaya çalışırsam, görüntü hala sola hareket eder.

Peki libgdx'de bunu nasıl aşabilirim ??

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

Eğer kod parçacığını ... –

+0

gönderebilir Sen [bu eski post] [1] [1] den cevap alabilirsiniz/questions/937313/android-basic-gesture-detection –

+0

Bu libgdx ile çalışır mı? – Raghunandan

cevap

4

Bu bağlantıdaki örneği kullandım. 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

Bu neden azalıyor? – 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

Bu cevap, Libgdx değil vanilya Android içindir. Ayrıca, orijinal sorunun zaten yapmadığı bir şey yapmaz. –

+0

hiçbir açıklama sadece kod. Kodun nasıl çalıştığını açıklar ve sorulan problemi çözer misiniz? –

İlgili konular