gpt4 book ai didi

java - 如何在 Libgdx 中创建一个按钮?

转载 作者:IT老高 更新时间:2023-10-28 21:07:17 25 4
gpt4 key购买 nike

我想创建一个在用户悬停或单击它时会发生变化的按钮。我创建了以下变量

Button buttonPlay = new Button();

我现在不知道该怎么办,如何加载图像?如何将文本写入按钮?如何实现事件/效果(悬停、点击)?

如果有人可以为按钮编写一些示例代码,那将非常有帮助。

最佳答案

按钮只是 libgdx 中的一个角色。要渲染一个 Actor ,您需要使用一个包含屏幕上所有 Actor 的舞台,渲染它们并更新它们。我假设您想要一个带有文本的按钮,因此您应该使用 TextButton 类并将其添加到舞台。 TextButton 需要一个要呈现的字符串和一个 ButtonStyle,在本例中是一个 TextButtonStyle,它基本上是一个包含有关按钮的所有信息的类(字体、未按下时可绘制、按下时可绘制等)。

   public class ButtonExample extends Game{

Stage stage;
TextButton button;
TextButtonStyle textButtonStyle;
BitmapFont font;
Skin skin;
TextureAtlas buttonAtlas;

@Override
public void create() {
stage = new Stage();
Gdx.input.setInputProcessor(stage);
font = new BitmapFont();
skin = new Skin();
buttonAtlas = new TextureAtlas(Gdx.files.internal("buttons/buttons.pack"));
skin.addRegions(buttonAtlas);
textButtonStyle = new TextButtonStyle();
textButtonStyle.font = font;
textButtonStyle.up = skin.getDrawable("up-button");
textButtonStyle.down = skin.getDrawable("down-button");
textButtonStyle.checked = skin.getDrawable("checked-button");
button = new TextButton("Button1", textButtonStyle);
stage.addActor(button);
}

@Override
public void render() {
super.render();
stage.draw();
}
}

那么这里发生了什么?我正在为“buttons.pack”中的按钮创建一个包含所有纹理的舞台、字体和纹理图集。然后我初始化一个空的 TextButtonStyle 和我为向上、向下和选中状态添加字体和纹理。 font、up、down 和 checked 都是 Drawable 类型的静态变量,因此您可以真正传递任何类型的 Drawable(纹理、9-patch 等)。然后只需将按钮添加到舞台。

现在,为了在实际单击按钮时执行某些操作,您必须为按钮添加一个监听器,即 ChangeListener。

    button.addListener(new ChangeListener() {
@Override
public void changed (ChangeEvent event, Actor actor) {
System.out.println("Button Pressed");
}
});

当然,与其将按钮直接添加到舞台,不如将其添加到表格并将表格添加到舞台,但我不想让这篇文章太困惑。 Here是关于 libgdx 中表的一个很好的教程。

关于java - 如何在 Libgdx 中创建一个按钮?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21488311/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com