【问题标题】:Drop-down menu with title - libgdx带有标题的下拉菜单 - libgdx
【发布时间】:2018-08-23 13:12:42
【问题描述】:

我正在尝试使用 Libgdx 实现一个下拉菜单。 我已经看到了一些关于这方面的话题,但没有提到我尝试做的事情。

例如在那个问题中:Libgdx - Making a drop-down menu/settings screen

我想做的是一样的,但是有一个标题。 我的意思是,像这样: 不需要左边的图片。

我已经尝试了一些东西:

  • 带有一个包含一个按钮和一个字符串选择框的堆栈

    • Button 可以隐藏 selectBox 的选定值
    • 图形上一切正常,但触发事件是 ChangeEvent -> 如果我在“新建”上连续单击两次,则不会触发任何事件。
  • 带有一个包含一个按钮和一个按钮选择框的堆栈

    • Button 可以隐藏 selectBox 的选定值
    • 图形上一切都很好,但是当我单击 SelectBox 列表的按钮时,什么也没有发生,因为屏幕上绘制的只是我的 Button 对象的“toString() 结果”,而不是 Button 本身->没有触发任何事件。

我不确定libgdx能否实现我想要的,因为这在智能手机的屏幕上不会很漂亮,但我只是想做一个桌面游戏,所以...... ^ ^'

提前致谢,

【问题讨论】:

    标签: drop-down-menu libgdx


    【解决方案1】:

    几个月后,我终于找到了解决办法。

    我创建了 2 个 Button 实例:

    Button option1 = new Button();
    Button option2 = new Button();
    option1.addListener(new ClickListener() {
        @Override
        public void clicked(InputEvent event, float x, float y) {
            System.out.println("Do something 1");
        }
    });
    option2.addListener(new ClickListener() {
        @Override
        public void clicked(InputEvent event, float x, float y) {
            System.out.println("Do something 2");
        }
    });
    

    然后,一个包含这两个按钮的 Button 的 SelectBox。

    SelectBox<Button> selectBox = new SelectBox<>(skin);
    selectBox.setItems(option1, option2);
    

    在SelectBox中,我会有两种可能。

    然后,我希望另一个按钮位于 SelectBox“结果”上方。我创建它并将它和 SelectBox 放在一个堆栈中。

    Button menuButton = new Button();
    Stack stack = new Stack();
    stack.add(selectBox);
    stack.add(menuButton);
    

    图形上一切都很好,但这就是我在问题中提到的:当我单击列表中的选项时没有任何反应。 但这是新事物:

    selectBox.getList().addListener(new ClickListener() {
        @Override
        public void clicked(InputEvent event, float x, float y) {
            for (EventListener eventListener: fileSelectBox.getSelected().getListeners()) {
                if (eventListenerinstanceof ClickListener) {
                    ((ClickListener) eventListener).clicked(event, x, y);
                }
            }
        }
    });
    

    而且它正在工作。似乎当我们这样做时:

    selectBox.getSelected().getClickListener().clicked(event, x, y);
    

    它不会向手动添加的 ClickListener 发送事件...

    希望对大家有所帮助!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-07-19
      • 1970-01-01
      • 1970-01-01
      • 2016-10-26
      • 1970-01-01
      • 2020-08-01
      • 1970-01-01
      • 2019-11-02
      相关资源
      最近更新 更多