首页 > 代码库 > Libgdx 触摸事件解析

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);

                }

            }

        });





Libgdx 触摸事件解析