touch area http://imageshack.us/a/img836/2909/swipe1.png
在绿色区域,用户可以向上,向右,向下,向左滑动。 我怎么能得到例如向上滑动?或向下滑动?或向右滑动或向左滑动? 例如如何获得一个字符串 - > input = getSwiped(); - >然后输入是向上,向右,向下或向左
用户可以触摸两个按钮。 1或2。 1表示鸭子,2表示跳跃。
我想同时检查这些输入。用户可以在同一时刻触摸并向上滑动。
我知道有一个GestureDetector。我查看了代码,但不知道如何使用滑动部分。
我知道如何检查按钮。问题只出在这里 - >如何同时检查输入以及如何向上滑动或向右滑动等。
我搜索了一个如何检查Multitouching:
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;
//...
}
答案 0 :(得分:24)
This解释了一种实现系统检测滑动方向的非常好的方法。我会在这里发布,因为这篇文章可能在将来丢失:
创建一个类名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() {
}
}));
答案 1 :(得分:0)
我制作了一个简单的类来识别滑动的方向
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.input.GestureDetector;
import com.badlogic.gdx.math.Vector2;
/ ** *由ROHIT于3/11/2018创建。 * /
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;
}
}
以上所有代码都使用libGDX Gdx.input.getDeltaX()
和Gdx.input.getDeltaY()
来获取方向的相对变化。
希望这会有所帮助。