11

触摸区 http://imageshack.us/a/img836/2909/swipe1.png

在绿色区域中,用户可以向上、向右、向下、向左滑动。我现在如何获得例如向上滑动?或向下滑动?或向右滑动或向左滑动?例如如何获取字符串 -> input = getSwiped(); -> 输入然后向上,或向右,或向下,或向左

用户可以触摸两个按钮。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;

/** * 由 ROHIT 于 2018 年 3 月 11 日创建。*/

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 回答