2013-07-26 41 views
2

我想用一些比较复杂的触摸屏手势,我看到,你不能从LibGdx:利用手势监听

Gdx.input 

访问要做到这一点我必须创建一个手势监听器,所以我创建了类GestureHandler并复制了wiki中的代码。我的手势处理机看起来是这样的:

public class GestureHandler implements GestureListener { 

@Override 
public boolean touchDown(float x, float y, int pointer, int button) { 
    return false; 
} 

@Override 
public boolean tap(float x, float y, int count, int button) { 
    return false; 
} 

@Override 
public boolean longPress(float x, float y) { 
    return false; 
} 

@Override 
public boolean fling(float velocityX, float velocityY, int button) { 
    return false; 
} 

@Override 
public boolean pan(float x, float y, float deltaX, float deltaY) { 
    return false; 
} 

@Override 
public boolean zoom(float initialDistance, float distance) { 
    return false; 
} 

@Override 
public boolean pinch(Vector2 initialPointer1, Vector2 initialPointer2, Vector2 pointer1, Vector2 pointer2) { 
    return false; 
    } 
} 

我的问题是,现在我已成立手势监听器怎么用它。我如何从这些方法获取信息?感谢您的任何帮助!

回答

6

wiki

GestureDetector一个是伪装的InputProcessor。要倾听 手势,必须执行GestureListener接口,并将 传递给GestureDetector的构造函数。该检测器是 然后设置为InputProcessor,无论是在一个InputMultiplexer或作为 主InputProcessor

我承认是相当致密的。但在维基更远一些下来,你会看到:

Gdx.input.setInputProcessor(new GestureDetector(new MyGestureListener())); 

重新组织上述希望的密度小英:GestureHandler实例传递到LibgdxGestureDetector实例。该对象将积累“原始”输入,并将其转换为更高级别的“手势”。要获得原始输入,需要将其输入到原始输入的位置。通过Gdx.input.setInputProcessor安装它的最基本的方式,但你也可以通过InputMultiplexer安装它(但这不值得进入这里)。

+0

因此,Gdx.input.setInputProcessor(新的GestureDetector(新的GestureHandler());设置输入,但我怎么可以访问这些手势,因为所有的方法只是返回一个布尔值,我想要的参数为例:public boolean longPress (float x,float y)我想要x和y变量 – Bevilacqua

+0

把你的代码放在回调里面,你的代码可能必须有不同的结构来处理像这样的输入“事件”(与“轮询“体系结构) –

+0

你的意思是在GestureHandler类中吗?EX.longPress(float x,float y){x = 0} – Bevilacqua