gpt4 book ai didi

java - 图像文本按钮LibGDX

转载 作者:行者123 更新时间:2023-12-01 10:09:48 25 4
gpt4 key购买 nike

我正在和几个 friend 一起创建一个游戏,目前正在制作主菜单。我想出了如何获得常规的旧 TextButtons,但 ImageTextButtons 给我带来了非常困难的时间。我有两个麦克风图像,一张打开,一张关闭,当用户单击它时它应该改变。我使用了纹理打包程序,作为本教程的一部分:https://www.youtube.com/watch?v=YPxd_xbnIpk

我一直在使用的众多解决方案之一如下:菜单状态类-

Private skin = new Skin;
TextureAtlas buttonAtlas = new TextureAtlas ("mutebuttons.pack");
skin.addRegions(buttonAtlas);
TextButtonStyle buttonStyle = new TextButtonStyle();
ImageTextButtonStyle buttonStyle2 = new ImageTextButtonStyle();
buttonStyle.up = skin.getDrawable("soundIconON");
buttonStyle.down = skin.getDrawable("soundIconOFF");

muteButtons.pack 已包含打开和关闭麦克风图像 (soundIconON/OFF)。

如果您需要更多信息,请告诉我,并提前致谢。埃德

最佳答案

按钮会自动进行 self 检查。您无需执行任何特殊操作,并且始终可以通过 .isChecked 获取选中状态。按钮默认情况下处于未选中状态,但您可以在创建按钮时通过 setChecked(true) 将按钮更改为选中状态。

如果您想根据按钮的选中状态更改按钮的外观,您所要做的就是添加可绘制对象。在内部,它执行类似如果没有选中状态图像则使用默认图像之类的操作。

现在对于按钮的类型,我认为您只需使用图像按钮就可以了,但任何按钮都可以创建具有可变外观的按钮。 ImageButton 仅允许您在按钮的背景上添加图像。这些是 3 个不同按钮的样式:

    TextButton.TextButtonStyle textButtonStyle = 
new TextButton.TextButtonStyle(
Drawable up, //Background for up state
Drawable down, //background for down state
Drawable checked, //background for checked == true
BitmapFont font); //font

ImageButton.ImageButtonStyle imageButtonStyle =
new ImageButton.ImageButtonStyle(
Drawable up,
Drawable down,
Drawable checked,
Drawable imageUp, //Image for up state
Drawable imageDown, //Image for down state
Drawable imageChecked, //Image for checked == true
BitmapFont font);

//Never actually used this one, you made me aware of it's excistance. I think this is a redundant class.
ImageTextButton.ImageTextButtonStyle imageTextButtonStyle =
new ImageTextButton.ImageTextButtonStyle(
Drawable up,
Drawable down,
Drawable checked,
BitmapFont font);

因此,您需要做的就是设置选中的可绘制对象并开始单击按钮。

您也可以在皮肤文件中设置这些,只需从 json 调用正确的可绘制名称即可。这就是我使用文本按钮创建简单切换按钮的方法。

  com.badlogic.gdx.scenes.scene2d.ui.TextButton$TextButtonStyle:
{
default: { up: my_up_button, checked: my_checked_button, font: default-font, fontColor: white }
}

如果我不想在上面添加文字,只需传递一个空字符串即可。或者,您也可以通过点击更改文本。

    final TextButton button = new TextButton("Ewwww! Touch me!", skin);
button.addListener(new ClickListener() {
@Override
public void clicked(InputEvent event, float x, float y) {
super.clicked(event, x, y);
if (button.isChecked())
{
button.setText("Now I am unchecked!");
}
else
{
button.setText("Now I am checked!");
}
}
});

关于java - 图像文本按钮LibGDX,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36199858/

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