libGDX中的手势识别

本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

转载自夜明的孤行灯

本文链接地址: https://www.huangyunkun.com/2014/06/23/libgdx-gesture-detection/

看到群里面很多人在自己做手势识别的东西,其实Libgdx提供了一个GestureDetector来专门处理这个问题。

常用的情况有以下几种:

  • touchDown 用户触碰屏幕
  • longPress 用户长按屏幕
  • tap 快速触碰
  • pan 平移
  • zoom 双指的缩放行为

很明显,GestureDetector是事件驱动的。使用的时候需要实现一个GestureListener,然后将其作为参数传入GestureDetector。

publicclass GListener implements GestureListener{

@Override
publicbooleantouchDown(float x,float y,int pointer,int button) {

returnfalse;
}

@Override
publicbooleantap(float x,float y,int count,int button) {

returnfalse;
}

@Override
publicbooleanlongPress(float x,float y) {

returnfalse;
}

@Override
publicbooleanfling(float velocityX,float velocityY,int button) {

returnfalse;
}

@Override
publicbooleanpan(float x,float y,float deltaX,float deltaY) {

returnfalse;
}

@Override
publicbooleanpanStop(float x,float y,int pointer,int button) {

returnfalse;
}

@Override
publicbooleanzoom (float originalDistance,float currentDistance){

returnfalse;
}

@Override
publicbooleanpinch (Vector2 initialFirstPointer, Vector2 initialSecondPointer, Vector2 firstPointer, Vector2 secondPointer){

returnfalse;
}
}

然后实例化并设置到inputPorcessor

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

这玩意好用,但是有一些坑需要注意:

  • 事件间隔,很多事件都和事件间隔有关,必要的时候可以修改
  • 重复触发,某些事件会重复触发,可以添加一些属性来区分,比如通过触发源来进行二次事件分发。

参考文献

Event Handle
Gesture detection

本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

转载自夜明的孤行灯

本文链接地址: https://www.huangyunkun.com/2014/06/23/libgdx-gesture-detection/

发表评论