使用libGDX,在这个特定的项目中,我们使用Dialog
在用户单击某个按钮时弹出一个框。
我想要的是能够通过点击Dialog
的外部来关闭它。
在其他时候,我使用了两个表,一个背景表和一个菜单表,并在背景表中添加了一个透明背景,当单击该背景表时,将从Stage
中删除这两个表。
我已经尝试过创建一个类,该类同时具有Dialog
和一个背景表,就像上面提到的一样,但背景表从未接收到任何操作。
在创建对话框之前,我也尝试过简单地将这个背景表添加到后台,但这也不起作用。
最后,我还尝试了Dialog
的子类,其想法是覆盖show(stage)
方法来更改其行为,但我不知道如何执行此操作,也不确定它是否有效。
我认为问题是dialog.show(stage)
将阶段中的情况更改为只接受对话框的Window
内部的单击。我看到过这个关于在对话框中添加关闭按钮的问题,但使用剪切设置无法解决这个问题。
还有一种可能性是,当show()
调用pack()
方法并进行布局时,可能发生了一些事情,使我试图做的事情变得不可能。我认为解决方案将覆盖show()
或覆盖pack()
,或者两者都覆盖,但我不知道如何做到这一点。
如果需要的话,我可以发布代码,但这应该是我尝试过的和需要完成的非常完整的描述。
我知道这是一个老问题,但对于像我这样在整个网站上搜索答案却在libGDX代码中找到答案的人来说,通过代码对.close()libGDX对话框的答案只是调用方法
dialog.hide();
编辑(从下面的评论中添加):
所以他所需要做的就是注册一个全球着陆事件,看看是否触摸发生在他的对话框的矩形内,如果没有,关闭