LibGDX 按钮组的滚动面板
LibGDX Scroll Pane of buttonGroup
我正在尝试创建自己的瓦片地图创建器,因此我需要一些面板供用户在纹理之间进行选择。我想在我的相机视图中创建滚动窗格。它移动完美,一切都与字符串列表一起工作,但如果我想将字符串更改为 buttonGroup,它只显示在我的滚动窗格 "com.badlogic.gdx.scenes.scene2d.ui.ButtonGroup@5dcff25d" 中,仅显示一行。这是我的代码:
private void initPanel(){
skin=new Skin(Gdx.files.internal("uiskin.json"));
background = new Group();
background.setBounds(0, CAM_HEIGHT-PANEL_SIZE, PANEL_SIZE, PANEL_SIZE);
stage=new Stage(new ScreenViewport());
list=new List<ButtonGroup>(skin);
buttons=new TextButton[TEXTURE_NUMBER];
buttons[0]=new TextButton("Delete",skin);
buttons[1]=new TextButton("Red",skin);
buttons[2]=new TextButton("Blue",skin);
buttons[3]=new TextButton("Green",skin);
buttonGroup=new ButtonGroup<TextButton>(buttons);
buttonGroup.setMaxCheckCount(1);
buttonGroup.setMinCheckCount(0);
list.setItems(buttonGroup);
scrollPane=new ScrollPane(list);
scrollPane.setBounds(0, 0, PANEL_SIZE, PANEL_SIZE);
scrollPane.setPosition(0,CAM_HEIGHT-PANEL_SIZE);
scrollPane.setTransform(true);
stage.addActor(background);
stage.addActor(scrollPane);
background.addActor(new Image(new Texture("textures/panel_background.png")));
Gdx.input.setInputProcessor(stage);
}
每当您看到 com.badlogic.gdx.scenes.scene2d.ui.ButtonGroup@5dcff25d
或 package.class@hexstring
之类的内容时,这意味着有人试图通过调用 Object#toString()
.
将对象转换为字符串
在这种情况下,罪魁祸首是 List
class- 它旨在获取一堆对象并将它们显示为文本。 ButtonGroup
旨在逻辑关联按钮而不是将它们放置在屏幕上,因此您需要创建 ButtonGroup
and a Table
.将按钮添加到两者,然后将 table 放入 ScrollPane
.
我假设您当然需要 ButtonGroup 功能来管理按钮。如果按钮彼此独立,则可以完全跳过 ButtonGroup,只需将按钮添加到 table.
我正在尝试创建自己的瓦片地图创建器,因此我需要一些面板供用户在纹理之间进行选择。我想在我的相机视图中创建滚动窗格。它移动完美,一切都与字符串列表一起工作,但如果我想将字符串更改为 buttonGroup,它只显示在我的滚动窗格 "com.badlogic.gdx.scenes.scene2d.ui.ButtonGroup@5dcff25d" 中,仅显示一行。这是我的代码:
private void initPanel(){
skin=new Skin(Gdx.files.internal("uiskin.json"));
background = new Group();
background.setBounds(0, CAM_HEIGHT-PANEL_SIZE, PANEL_SIZE, PANEL_SIZE);
stage=new Stage(new ScreenViewport());
list=new List<ButtonGroup>(skin);
buttons=new TextButton[TEXTURE_NUMBER];
buttons[0]=new TextButton("Delete",skin);
buttons[1]=new TextButton("Red",skin);
buttons[2]=new TextButton("Blue",skin);
buttons[3]=new TextButton("Green",skin);
buttonGroup=new ButtonGroup<TextButton>(buttons);
buttonGroup.setMaxCheckCount(1);
buttonGroup.setMinCheckCount(0);
list.setItems(buttonGroup);
scrollPane=new ScrollPane(list);
scrollPane.setBounds(0, 0, PANEL_SIZE, PANEL_SIZE);
scrollPane.setPosition(0,CAM_HEIGHT-PANEL_SIZE);
scrollPane.setTransform(true);
stage.addActor(background);
stage.addActor(scrollPane);
background.addActor(new Image(new Texture("textures/panel_background.png")));
Gdx.input.setInputProcessor(stage);
}
每当您看到 com.badlogic.gdx.scenes.scene2d.ui.ButtonGroup@5dcff25d
或 package.class@hexstring
之类的内容时,这意味着有人试图通过调用 Object#toString()
.
在这种情况下,罪魁祸首是 List
class- 它旨在获取一堆对象并将它们显示为文本。 ButtonGroup
旨在逻辑关联按钮而不是将它们放置在屏幕上,因此您需要创建 ButtonGroup
and a Table
.将按钮添加到两者,然后将 table 放入 ScrollPane
.
我假设您当然需要 ButtonGroup 功能来管理按钮。如果按钮彼此独立,则可以完全跳过 ButtonGroup,只需将按钮添加到 table.