美文网首页LibGDX
LibGDX输入模块之手势检测

LibGDX输入模块之手势检测

作者: 天神Deity | 来源:发表于2017-09-06 21:19 被阅读2次

触摸屏可以很好地适应基于手势的输入。 一个手势可能是用两根手指夹住,表示要放大,点击或双击,长按等等。
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输入模块之手势检测

    触摸屏可以很好地适应基于手势的输入。 一个手势可能是用两根手指夹住,表示要放大,点击或双击,长按等等。Libgdx...

  • LibGDX输入模块之罗盘

    一些Android设备和iOS设备有一个集成的磁场传感器,提供有关器件获取北极方向的信息。 注意:目前在iOS设备...

  • LibGDX输入模块之轮询

    轮询是指检查输入设备的当前状态,例如特定的键被按下,屏幕上的第一个手指在何处等等。这是一种处理用户输入的快速简便的...

  • LibGDX输入模块之简单的文本输入

    如果应用程序需要向用户询问字符串(例如用户名或密码),则可以通过使用可在一定程度上自定义的简单对话框来执行此操作。...

  • LibGDX输入模块之软键盘

    大多数Android设备和所有iOS设备都没有硬件键盘。 相反,可以向用户呈现软屏或屏幕键盘。 要打开屏幕键盘,我...

  • LibGDX输入模块之振荡器

    振动器允许您振动用户的手机。虽然不是严格的输入设备,但它仍然是一种外设。 我们觉得它属于输入设备。振动器仅在And...

  • LibGDX输入模块之陀螺仪

    一些Android设备有一个陀螺传感器,可以提供关于设备x,y和z轴旋转速率的信息。 注意:陀螺仪目前在iOS设备...

  • LibGDX输入模块之基于事件处理

    事件处理允许您获得关于用户输入的更细粒度和序列信息。事件处理提供了一种方法来实现与用户界面的交互,其中非常重要的特...

  • LibGDX输入模块之内存管理

    游戏是资源密集型的应用。 图像和声音效果可能占用大量的RAM。 此外,这些资源大部分不由Java垃圾回收器管理。 ...

  • LibGDX输入模块配置和查询

    有时需要知道目标平台支持哪些输入设备。 通常情况下,您的游戏不需要所有支持的输入设备。 您可能不需要加速度计或指南...

网友评论

    本文标题:LibGDX输入模块之手势检测

    本文链接:https://www.haomeiwen.com/subject/dugvjxtx.html