0

我试图TextButton通过给它一个包含按钮样式的 JSON 文件来初始化它,但是我不断收到以下错误:

线程“LWJGL 应用程序”java.lang.IllegalArgumentException 中的异常:缺少 LabelStyle 字体。

在研究了错误的原因后,当您忘记将字体作为TextButtonStyle.

这是我的 json 文件

{

    "com.badlogic.gdx.graphics.Color":{
    "golden":{"r":255,"g":215,"b":0,"a":1}

    },
    "com.badlogic.gdx.graphics.g2d.BitmapFont": {
      "arcade": {"file": "arcade.fnt"}

    },

    "com.badlogic.gdx.scenes.scene2d.ui.Label$LabelStyle": {
            "default": {
                    "font": arcade,
                    "fontColor": golden
            }
    },

    "com.badlogic.gdx.scenes.scene2d.ui.TextButton$TextButtonStyle": {
            "buttonstyle1": {

                    "up": "unpressedtextbutton",
                    "down": "pressedtextbutton",
                    "font": arcade
    }
    }
}

在代码中我像这样初始化按钮:

Skin skin = new Skin(Gdx.files.internal("buttonstyles.json"),new TextureAtlas(Gdx.files.internal("uistuff.atlas")));
myTextButton = new TextButton("text of the button",skin,"buttonstyle1")

我的理论是它以某种方式没有读取字体文件“arcade.fnt”,我假设它从中读取文件的目录是资产文件夹,这就是我的“arcade.fnt”文件所在的位置。

4

2 回答 2

0

它是这样工作的吗?官方的uiskin.json是这样做的:

com.badlogic.gdx.scenes.scene2d.ui.Label$LabelStyle: {
  default: { font: default-font, fontColor: white }
}

甚至字体都不需要引号。

com.badlogic.gdx.graphics.g2d.BitmapFont: { 
  default-font: { file: default.fnt } 
},

可能不是正确的 JSON,但 libgdx 有它自己的轻量级 JSON 样式。

于 2017-07-25T13:44:11.537 回答
0

对不起,我好像犯了一个愚蠢的错误。由于我在 JSON 文件中声明了字体,因此我删除了之前在代码中用于定义按钮样式的字体,并且后来将该字体用于标签样式,因此发现它为 null 并且它给出了错误。

于 2017-07-24T16:52:49.030 回答