【问题标题】:Reusable scene2d dialog可重用的scene2d对话框
【发布时间】:2016-01-27 14:20:58
【问题描述】:

scene2d 模态对话框的典型用例是其中有两个按钮,一个用于用户操作确认,一个用于取消。

只需单击此取消按钮即可关闭(隐藏)对话窗口(这是默认行为,基本上是所有需要的,因为我们不希望发生任何事情),然后重复应该执行的操作再次显示(例如单击“删除”按钮以显示删除确认对话框)不会发生任何事情(因为该对话框现在已隐藏)。

启用对话框返回的正确方法是什么?

应该在无按钮监听器中调用 show() 吗?

noButton.addListener(new ClickListener() {
                @Override
                public void clicked(InputEvent event, float x, float y) {
                    deleteDialog.show(stage);
                };

official scene2d code example 每次都会创建一个新对话框,但我的理解是重用这些元素会更好。

【问题讨论】:

    标签: libgdx scene2d


    【解决方案1】:

    我猜你的对话框在一个变量中:

    Group dialog = new Group();
    

    你可以这样添加:

    stage.addActor(dialog);
    

    Listener to remove - remove 方法不会删除任何内容,它只是将actor从舞台上移除:

    noButton.addListener(new ClickListener() {
        @Override
        public void clicked(InputEvent event, float x, float y) {
            dialog.remove();
        };  
    

    然后当你想再次显示时:

    stage.addActor(dialog);
    

    【讨论】:

    • 谢谢。我知道它必须在一个变量中,我知道该怎么做,等等(实际上,如果您希望它立即可用并且不需要删除/隐藏,那么您必须在侦听器中调用 addActor/show,因为它是单击任何按钮时自动为此小部件完成)。我只是想知道这是否是正确的方法。这对我来说似乎有点奇怪,但也许只是我 :-) 我想我会尝试在 libGDX 论坛上提问。
    猜你喜欢
    • 1970-01-01
    • 2016-07-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-18
    • 1970-01-01
    • 2013-05-22
    • 1970-01-01
    相关资源
    最近更新 更多