带标题的下拉菜单-libgdx

时间:2018-08-23 13:12:42

标签: drop-down-menu libgdx

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

例如该问题:Libgdx - Making a drop-down menu/settings screen

我想做的是一样的,但有标题。 我的意思是这样的:Drop-down menu of Eclipse 不需要左侧的图像。

我已经尝试了一些方法:

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

    • 该按钮可隐藏selectBox的选定值
    • 在图形上一切都很好,但是triggerEvent是一个ChangeEvent->如果我连续两次在“ New”上单击,则不会触发任何事件。
  • 带有一个包含一个按钮和一个SelectBox的按钮的堆栈

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

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

预先感谢

1 个答案:

答案 0 :(得分:0)

几个月后,我终于找到了解决方案。

我创建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 ...

我希望它可以帮助其他人!