ImageTextButton LibGDX

时间:2016-03-24 12:09:03

标签: java json text libgdx imagebutton

我正和一些朋友一起制作一款游戏,目前我在主菜单上工作。我想出了如何获得常规的旧TextButtons,但ImageTextButtons给了我一个非常艰难的时间。我有两个麦克风图像,一个开启,一个关闭,当用户点击它时它应该会改变。我使用了Texture Packing程序,作为本教程的一部分:https://www.youtube.com/watch?v=YPxd_xbnIpk

我一直在使用的众多解决方案之一如下: MenuState类 -

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)。

如果您需要更多信息,请告诉我,并提前感谢。 编

1 个答案:

答案 0 :(得分:1)

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

如果要根据已选中的状态更改按钮的外观,您只需添加可绘制的内容即可。在内部,它的作用类似于If no checked state image just use default image

现在对于按钮的类型,我认为只使用图像按钮就可以了,但任何按钮都可以创建一个外观可变的按钮。 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);

所以你需要做的就是设置勾选的drawable并开始点击按钮。

您也可以在皮肤文件中设置它们,只需从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!");
            }
        }
    });