我正在尝试使用Libgdx实现一个下拉菜单。 我已经看到了一些有关此的主题,但没有提及我尝试做的事情。
例如该问题:Libgdx - Making a drop-down menu/settings screen
我想做的是一样的,但有标题。 我的意思是这样的: 不需要左侧的图像。
我已经尝试了一些方法:
带有一个包含一个按钮和一个字符串选择框的堆栈
带有一个包含一个按钮和一个SelectBox的按钮的堆栈
我不确定libgdx能否实现我想要的功能,因为在智能手机的屏幕上这不会很漂亮,但是我只想玩台式机游戏,所以... ^ ^'
预先感谢
答案 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 ...
我希望它可以帮助其他人!