2017-11-27 6 views
0

私は、さまざまなケースを示すアプリケーションで作業しています。あなたの選択に応じて左右にスワイプします。ドラッグの問題は解決していますが、問題はオブジェクトがいつスワイプされ、あなたが望む方向にドロップされたかを知ることです。私はどのように続けるべきですか?ユーザーがパンメソッドが呼び出される画面上で指をドラッグしているときLibGDXジェスチャーワイプを認識するにはどうすればいいですか?

stage = new Stage(); 
    SimpleGestureDetector sgd = new SimpleGestureDetector(new SimpleGestureDetector.DirectionListener() { 

     @Override 
     public void onUp() { 
      leaf.setY(leaf.getY()+100); 
     } 

     @Override 
     public void onRight() { 
      leaf.setX(leaf.getX()+100); 

      } 
     } 

     @Override 
     public void onLeft() { 
      leaf.setX(leaf.getX()-100); 
     } 

     @Override 
     public void onDown() { 
      leaf.setY(leaf.getY()-100); 
     } 


    }); 
+0

何らかのエラーメッセージを追加することができますか、それとも失敗するかを表示できますか?あなたはあなたの質問をどのように解決したいのかについて何も示そうとしていませんでした...今はあまりにも一般的だと私は言っています – dv3

答えて

0

:AppScreenではがどのように見えるか
(火口のアプリと同様に)

public class SimpleGestureDetector extends GestureDetector { 


public interface DirectionListener { 
    void onLeft(); 

    void onRight(); 

    void onUp(); 

    void onDown(); 
} 

public SimpleGestureDetector(DirectionListener directionListener) { 
    super(new DirectionGestureListener(directionListener)); 
} 

private static class DirectionGestureListener extends com.badlogic.gdx.input.GestureDetector.GestureAdapter { 
    DirectionListener directionListener; 

    public DirectionGestureListener(DirectionListener directionListener){ 
     this.directionListener = directionListener; 
    } 

    @Override 
    public boolean fling(float velocityX, float velocityY, int button) { 
     if(Math.abs(velocityX)>Math.abs(velocityY)){ 
      if(velocityX>0){ 
       directionListener.onRight(); 
      }else{ 
       directionListener.onLeft(); 
      } 
     }else{ 
      if(velocityY>0){ 
       directionListener.onDown(); 
      }else{ 
       directionListener.onUp(); 
      } 
     } 
     return super.fling(velocityX, velocityY, button); 
    } 

} 

} 

。ドラッグを開始すると、指のx座標とy座標が取得されます。パンが初めて呼び出されたときには、それらを覚えておく必要があります。 "firstCall"と呼ばれる変数を使用するか、パンが呼び出されたときにそれをチェックし、trueからfalseに設定します。

次に、ユーザが指を持ち上げると、panStopが呼び出されます。ここでもx座標とy座標が返されます。それであなたが以前に思い出したものと比較して、基本的な数学をします。すなわち、古いyが新しいyとほぼ同じであれば、スワイプが水平であったことを意味する。新しいxが古いxの場合は、スワイプが右側にあることを意味します。そんな感じ。

https://github.com/libgdx/libgdx/wiki/Gesture-detection

+0

fling方法についても確認してください:https://libgdx.badlogicgames.com/nightlies/docs/api/ com/badlogic/gdx/input/GestureDetector.GestureListener.html#fling-float-float-int- 単純なジェスチャーでも使用できますか? – MilanG

関連する問題