繁体   English   中英

使用JSON初始化TextButton(Libgdx)时出错

[英]Error when using JSON to initialize TextButton (Libgdx)

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

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

在研究了错误的TextButtonStyle ,当您忘记在TextButtonStyle包含字体时,似乎会显示此消息,但是我确实将其包含在JSON文件中,所以我不知道为什么它一直显示。

这是我的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”文件所在的位置。

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

这样工作吗? 官方的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样式。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM