Libgdx 触屏事件
1.如何让Stage接受到触摸事件:
// 注册监听器
InputMultiplexer inputMultiplexer = new InputMultiplexer(getStage(),new GestureDetector(this));
Gdx.input.setInputProcessor(inputMultiplexer);
此处第二个为手势的监测。(滑动,缩放等)
2.这里特殊说明一下,所有事件的处理都是绘制之前的。
Gdx.input.justTouched()
Gdx.input.isTouched()
上面两个方法都是用来获取屏幕是否有点击(TouchDown操作)。
如果你想通过上面方法,进行Screen的切换操作,可不是个好主意。
if (Gdx.input.justTouched()) {
// If the screen is touched , go to the next screen
}
切换到第二个Screen的时候,第二个Screen会接受到touchUp事件,如果一些变量涉及到touchDown处理就出错。
原因如下:
第一个Screen处理down事件->切换screen,screen注册了事件接收器,进行绘制处理->此时已经是第二个Screen在显示,就会处理up事件了。
一个事件,起于TouchDown,终于TouchUp!
PS:如果想通过点击切换Screen,可以通过某个控件,如Image点击来实现。
Image screenBg.... 背景层,和屏幕大小一致
screenBg.addListener(new InputListener() {
@Override
public boolean touchDown(InputEvent event, float x, float y, int pointer, int button) {
// 只有返回true,才会有touchUp事件的触发。
return true;
}
@Override
public void touchUp(InputEvent event, float x, float y, int pointer, int button) {
if (条件触发) {
CHGame.getInstance().setScreen(nextScreen);
}
}
});