【问题标题】:Close Dialog by clicking outside of it通过单击外部关闭对话框
【发布时间】:2015-06-26 22:41:14
【问题描述】:

使用 libGDX,在这个特定项目中,我们使用Dialog 在用户单击某个按钮时弹出一个框。

我想要的是能够通过点击外部Dialog 来关闭它。

在其他时候,我使用了两个表格,一个背景表格和一个菜单表格,并在背景表格中添加了一个透明背景,单击该背景表格会从Stage 中删除这两个表格。

我尝试过创建一个既有Dialog 又有一个像上面提到的那样的背景表的类,但是背景表从不接收任何操作。

我也尝试在创建对话框之前简单地将这个背景表添加到舞台,但这也不起作用。

最后,我也尝试子类化Dialog,想法是重写show(stage) 方法来改变它的行为,但我不知道怎么做,我不确定它是否无论如何都会工作。

我认为问题在于dialog.show(stage) 将舞台中的情况更改为仅接受对话框的Window 内的点击。我已经看到这个关于adding a close button to a dialog box 的问题,但是使用剪辑设置并不能解决这个问题。

也有可能当show() 调用pack() 方法并执行其布局时,正在发生的事情使我试图做的事情变得不可能。我认为解决方案将覆盖show() 或覆盖pack(),或两者兼而有之,但我不知道该怎么做。

如果需要,我可以发布代码,但这应该是对我尝试过的内容和需要完成的内容的非常完整的描述。

【问题讨论】:

    标签: java user-interface dialog libgdx


    【解决方案1】:

    我知道这是一个老问题,但对于像我这样在整个网络上搜索答案却只在 libGDX 代码中找到答案的人来说,通过代码对 .close() 一个 libGDX 对话框的答案就是调用方法

    dialog.hide();
    

    编辑(从下面的 cmets 添加):

    所以他需要做的就是注册一个全局着陆事件,看看是否 触摸发生在他对话框的矩形内,如果没有, 关闭它

    【讨论】:

    • 请为您的答案添加更多解释。
    • 我只是说要通过代码关闭对话框,您可以执行 dialog.hide();所以他需要做的就是注册一个全局触摸事件并查看触摸是否发生在他的对话框的矩形内,如果没有,关闭它:3
    • 最好将这些细节添加到答案中。
    猜你喜欢
    • 2021-11-24
    • 2012-01-13
    • 1970-01-01
    • 1970-01-01
    • 2023-02-16
    • 2016-07-16
    • 2016-01-21
    • 1970-01-01
    相关资源
    最近更新 更多