官方文档部分解释
1)
TheGestureListenercan signal whether it consumed the event or wants it to be passed on to the next InputProcessor by returning either true or false respectively from its methods.
As with the events reported to a normalInputProcessor, the respective methods will be called right before the call toApplicationListener.render()on the rendering thread.
TheGestureDetectoralso has a second constructor that allows it to specify various parameters for gesture detection. Please refer to theJavadocsfor more information.
GestureDetector同样适用于inputprocessor对事件处理的的链式传递规则,因为GestureDetector实现了inputprocessor接口
二、应用举例
MyGestureDetector
package com.example.groupactiontest;
import com.badlogic.gdx.input.GestureDetector.GestureListener;
import com.badlogic.gdx.math.Vector2;
public class MyGestureListener implements GestureListener {
@Override
public boolean fling(float arg0, float arg1, int arg2) {//fling和pan差不多
System.out.println("------->fling");
return false;
}
@Override
public boolean longPress(float arg0, float arg1) {//长按
System.out.println("------->longPress");
return false;
}
@Override
public boolean pan(float arg0, float arg1, float arg2, float arg3) {
System.out.println("------->pan");
return false;
}
@Override
public boolean pinch(Vector2 arg0, Vector2 arg1, Vector2 arg2, Vector2 arg3) {//pinch和zoom差不多
System.out.println("------->pinch");
return false;
}
@Override
public boolean tap(float arg0, float arg1, int arg2, int arg3) {//tap和touchdown差不多
System.out.println("------->tap");
return false;
}
@Override
public boolean touchDown(float arg0, float arg1, int arg2, int arg3) {
System.out.println("gesturedetector------->touchDown");
return true;
}
@Override
public boolean zoom(float arg0, float arg1) {
System.out.println("------->zoom");
return false;
}
}
MyGame
package com.example.groupactiontest;
import com.badlogic.gdx.ApplicationListener;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.Input.Keys;
import com.badlogic.gdx.Input.Peripheral;
import com.badlogic.gdx.InputMultiplexer;
import com.badlogic.gdx.InputProcessor;
import com.badlogic.gdx.graphics.GL10;
import com.badlogic.gdx.input.GestureDetector;
public class MyGame implements ApplicationListener {
InputProcessor inputProcessor;
@Override
public void create() {
inputProcessor = new InputProcessor() {
@Override
public boolean touchUp(int screenX, int screenY, int pointer, int button) {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean touchDragged(int screenX, int screenY, int pointer) {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean touchDown(int screenX, int screenY, int pointer, int button) {
System.out.println("inputprocessor:--->towndown" );
return false;
}
@Override
public boolean scrolled(int amount) {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean mouseMoved(int screenX, int screenY) {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean keyUp(int keycode) {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean keyTyped(char character) {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean keyDown(int keycode) {
// TODO Auto-generated method stub
return false;
}
};
//GestureDetector同样适用于inputprocessor的链式传递规则(因为GestureDetector就是实现了inputprocessor接口的)
InputMultiplexer inputMultiplexer = new InputMultiplexer();
inputMultiplexer.addProcessor(new GestureDetector(new MyGestureListener()));
inputMultiplexer.addProcessor(inputProcessor);
Gdx.input.setInputProcessor(inputMultiplexer);
}
@Override
public void dispose() {
// TODO Auto-generated method stub
}
@Override
public void pause() {
// TODO Auto-generated method stub
}
@Override
public void render() {
Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT);
}
@Override
public void resize(int arg0, int arg1) {
// TODO Auto-generated method stub
}
@Override
public void resume() {
// TODO Auto-generated method stub
}
}
三、效果图
若GestureDetector中的touchDown的返回值为false,则logcat中的输出结果是
若GestureDetector中的touchDown的返回值为true,则logcat中的输出结果是
四、源码下载
http://download.youkuaiyun.com/detail/caihongshijie6/7041627
本文详细解析了游戏开发中手势检测组件GestureDetector的使用方法,包括其核心功能、事件监听实现及与InputProcessor的交互机制,并通过实例展示了如何在游戏逻辑中灵活运用手势事件。此外,文章还提供了相关代码示例和应用效果展示,帮助开发者深入理解并实践手势事件处理。
174

被折叠的 条评论
为什么被折叠?



