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

                }

            }

        });





转载于:https://my.oschina.net/oahcfly/blog/363122

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值