LibGDX输入模块之手势检测

触摸屏可以很好地适应基于手势的输入。 一个手势可能是用两根手指夹住,表示要放大,点击或双击,长按等等。
Libgdx提供了一个GestureDetector (source)类,可以检测以下手势:

  1. touchDown: 用户触摸屏幕
  2. longPress: 用户长按
  3. tap: 用户点击
  4. pan:用户在屏幕上拖动手指,监听器将报告当前的坐标与初始坐标的差值,这在移动相机时非常有用。
  5. panStop:不再平移时调用。
  6. fling: 用户将手指拖过屏幕,然后将其抬起(甩),滑动手势
  7. zoom:缩放,两个手指分开或者夹紧,在相机缩放时非常有用
  8. pinch:类似于缩放,监听器将报告初始和当前手指位置(不是距离), 有助于实现相机缩放和更复杂的手势,如旋转。

GestureDetector是伪装的事件处理程序,要监听手势,必须实现GestureListener接口并将其传递给GestureDetector的构造函数,然后将GestureDetector设置为InputProcessor,或者在InputMultiplexer上或作为主InputProcessor:

public class MyGestureListener 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 panStop(float x, float y, int pointer, int button) {
            
        return false;
    }
        
    @Override
    public boolean zoom (float originalDistance, float currentDistance){
            
       return false;
    }

    @Override
    public boolean pinch (Vector2 initialFirstPointer, Vector2 initialSecondPointer, Vector2 firstPointer, Vector2 secondPointer){
            
       return false;
    }
    @Override
    public void pinchStop () {
    }
}
Gdx.input.setInputProcessor(new GestureDetector(new MyGestureListener()));

GestureListener可以通过从其方法分别返回true或false来发出是否消费掉事件或者希望将其传递给下一个InputProcessor。

与正常InputProcessor事件一样,相应的方法将在调用ApplicationListener.render()之前调用。

GestureDetector还具有第二个构造函数,允许它为手势检测指定各种参数。 请参考Javadocs了解更多信息。

你可能感兴趣的:(LibGDX输入模块之手势检测)