关闭背景图像上的对话框触摸libgdx

时间:2017-03-22 13:04:09

标签: java android libgdx

我尝试在背景触摸时关闭对话框,但它始终处于其他状态

stage.addListener(new InputListener(){
                    @Override
                    public boolean touchDown(InputEvent event, float x, float y, int pointer, int button) {
                        if(stage.hit(x,y,true).equals(bg)) {
                            System.out.println("in th if");
                            dialog.addAction(rotateTo(90, .30f, Interpolation.smooth2));
                            dialog.hide();
                        }
                        else {
                            System.out.println("int the else");
                        }
                        return true;
                    }

                });

1 个答案:

答案 0 :(得分:1)

我认为这样可行,但没有测试。

对话框已经设置为接收所有touchDown输入,即使触摸超出其范围也是可见的,所以如果触摸超出其界限,只需给它一个隐藏它的监听器:

    dialog.addListener(new InputListener() {
        public boolean touchDown (InputEvent event, float x, float y, int pointer, int button) {
            if (x < 0 || x > dialog.getWidth() || y < 0 || y > dialog.getHeight()){
                dialog.hide();
            }
            return true;
        }
    });

这假定dialog是final或成员字段,因此您可以从侦听器访问它。

我认为您的代码无法正常工作的原因是,stage.hit(...)将始终返回dialog,无论坐标如何,因为对话框设置为吸收所有输入。