fliping这个函数当用户用手在屏幕上拖拽并且做出翻页动作时触发。
longPressed 这个很好理解,就是手指的长按动作,用户做出长按动作的时候触发
pinch收缩,其实就是一个多点触摸的手势且两个手指做出收缩的动作,为了解释方便,
4.tap 就是轻击了,和触摸有点类似,不过速度应该比触摸快一些
5.TouchDown
也非常好理解,手指按下的一瞬间就触发,不管其后是什么其他的动作都会触发touchDown()方法,如果时间较短,在touchDown()后会触发tap()
6zoom 与pinch对应,也是是一个多点触摸的手势,并且两个手指做出放大的动作
7.pan 和fliping比较类似,但是没有最后翻页的动作:
GestureDetector.GestureListener并不是一个InputProcessor,我们需要封装一个GestureDetector(它是一个InputProcessor)并加入系统监听列表
- Gdx.input.setInputProcessor(new GestureDetector(this));
同样的,对于这里有多个对象需要捕捉用户触摸事件的情况(如Progress既实现了InputProcessor接口也实现了GestureDetecotor.Listener),我们实际中的语句如下:
- multiplexer.addProcessor(this);
- multiplexer.addProcessor(stage);
- multiplexer.addProcessor(new GestureDetector(this));
- Gdx.input.setInputProcessor(multiplexer);
- boolean pinch(Vector2 initialFirstPointer, Vector2 initialSecondPointer, Vector2 firstPointer, Vector2 secondPointer)
- boolean zoom(float originalDistance, float currentDistance)
pinch()方法中用到了一个类,Vector2,我们从名字就可以看出来,这个类代表了一个二维矢量,不过我们可以更简单的理解为Vector2就是一个点,里面有x,y两个坐标。回调函数pinch()里有四个Vector2对象,分别代表动作开始时的两个手指的位置和当前两个手指的位置。
同理对于zoom()方法也是一样,回调函数里面传入了两个参数,一个是动作开始时两个手指的距离,第二个参数就是当前两个手指之间的距离。
pinch()方法比zoom()方法更全面,因为我们在pinch()方法中得到的是点的坐标,也可以转化成zoom()中的距离。