11

タッチエリアhttp://imageshack.us/a/img836/2909/swipe1.png

緑の領域で、ユーザーは上、右、下、左にスワイプできます。たとえば、上にスワイプするにはどうすればよいですか?または下にスワイプしますか?または右にスワイプまたは左にスワイプしますか?たとえば、文字列を取得する方法-> input = getSwiped(); ->入力は、上、右、下、または左になります

そして、ユーザーは2つのボタンに触れることができます。1または2。1はアヒル用、2はジャンプ用です。

この入力を同時にチェックしたいと思います。ユーザーは、タッチすると同時に上にスワイプすることもできます。

GestureDetectorがあることは知っています。コードを見ましたが、スワイプ部分をどのように使用すればよいのかわかりません。

ボタンの確認方法を少し知っています。問題はここだけです->入力を同時にチェックする方法と上にスワイプする方法、または右にスワイプする方法など。

マルチタッチをチェックする方法を見つけました:

for (int i = 0; i < 10; i++) {
    if (Gdx.input.isTouched(i) == false) continue;
    float x = Gdx.input.getX(i);
    float y = Gdx.graphics.getHeight() - Gdx.input.getY(i) - 1;
    //...
}
4

2 に答える 2

26

これは、スワイプの方向を検出するシステムを実装するための非常に良い方法を説明しています。記事が将来失われる可能性があるため、ここに投稿します。

クラス名SimpleDirectionGestureDetectorを作成します

public class SimpleDirectionGestureDetector extends GestureDetector {
public interface DirectionListener {
    void onLeft();

    void onRight();

    void onUp();

    void onDown();
}

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

private static class DirectionGestureListener extends 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);
    }

}

}

LibGdxアプリケーションのcreate()関数で、これを配置して、ゲームのジェスチャー処理をアクティブにします。

Gdx.input.setInputProcessor(new SimpleDirectionGestureDetector(new SimpleDirectionGestureDetector.DirectionListener() {

@Override
public void onUp() {

}

@Override
public void onRight() {

}

@Override
public void onLeft() {

}

@Override
public void onDown() {

}
}));
于 2014-01-10T06:52:09.597 に答える
0

スワイプの方向を特定するための簡単なクラスを作成しました

import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.input.GestureDetector;
import com.badlogic.gdx.math.Vector2;

/ ***2018年3月11日にROHITによって作成されました。* /

public class swipelistener  {

public boolean isswipright(){
    if(Gdx.input.isTouched()&&Gdx.input.getDeltaX()>0)
        return true;
    return false;
}

public boolean isswipleft(){
    if(Gdx.input.isTouched()&&Gdx.input.getDeltaX()<0)
        return true;
    return false;
}

public boolean isswipup(){
    if(Gdx.input.isTouched()&&Gdx.input.getDeltaY()>0)
        return true;
    return false;
}

public boolean isswipdown(){
    if(Gdx.input.isTouched()&&Gdx.input.getDeltaX()<0)
        return true;
    return false;
}

}

上記のすべてのコードは、libGDXGdx.input.getDeltaX()を使用してGdx.input.getDeltaY()、方向の相対的な変化を取得します。

これがお役に立てば幸いです。

于 2018-03-11T08:32:36.443 に答える