从android / assets加载json ui-skin文件时出错

时间:2016-06-07 15:56:39

标签: java android json libgdx android-assets

我有default.json文件用于将皮肤设置为ui组件。之前的文件位置位于项目包core / src / com / mygame中,其中包含以下数据:

{
  com.badlogic.gdx.graphics.g2d.BitmapFont: {
    default-font: {
      file: Razer.fnt
    }
  },
  com.badlogic.gdx.scenes.scene2d.ui.TextButton$TextButtonStyle: {
    default: {
      up: default-round,
      down: default-round-down,
      font: default-font
    },
  },
  com.badlogic.gdx.scenes.scene2d.ui.Window$WindowStyle: {
    default:  {
      titleFont: default-font
    }
  }
}

然后我会在onCreate方法中加载该文件 skin = new Skin(Gdx.files.internal("default.json")); 哪个有效。

但是,现在我决定将该文件移动到名为ui-skins/的assets文件夹中的android项目。问题是,当我尝试从路径Gdx.files.internal("ui-skins/default.json")加载该文件时出现错误:

Exception in thread "LWJGL Application" com.badlogic.gdx.utils.SerializationException: Error reading file: ui-skins/default.json
    at com.badlogic.gdx.scenes.scene2d.ui.Skin.load(Skin.java:98)
    at com.badlogic.gdx.scenes.scene2d.ui.Skin.<init>(Skin.java:75)
    at com.unknown.game.MyUnknownGame.create(MyUnknownGame.java:32)
    at com.badlogic.gdx.backends.lwjgl.LwjglApplication.mainLoop(LwjglApplication.java:147)
    at com.badlogic.gdx.backends.lwjgl.LwjglApplication$1.run(LwjglApplication.java:124)
Caused by: com.badlogic.gdx.utils.SerializationException: Error reading file: ui-skins/default.json
    at com.badlogic.gdx.utils.Json.fromJson(Json.java:694)
    at com.badlogic.gdx.scenes.scene2d.ui.Skin.load(Skin.java:96)
    ... 4 more
Caused by: com.badlogic.gdx.utils.SerializationException: Font file not found: Razer.fnt
    at com.badlogic.gdx.scenes.scene2d.ui.Skin$3.read(Skin.java:472)
    at com.badlogic.gdx.scenes.scene2d.ui.Skin$3.read(Skin.java:463)
    at com.badlogic.gdx.utils.Json.readValue(Json.java:884)
    at com.badlogic.gdx.scenes.scene2d.ui.Skin$1.readValue(Skin.java:428)
    at com.badlogic.gdx.utils.Json.readValue(Json.java:852)
    at com.badlogic.gdx.scenes.scene2d.ui.Skin$2.readNamedObjects(Skin.java:449)
    at com.badlogic.gdx.scenes.scene2d.ui.Skin$2.read(Skin.java:438)
    at com.badlogic.gdx.scenes.scene2d.ui.Skin$2.read(Skin.java:434)
    at com.badlogic.gdx.utils.Json.readValue(Json.java:884)
    at com.badlogic.gdx.scenes.scene2d.ui.Skin$1.readValue(Skin.java:428)
    at com.badlogic.gdx.utils.Json.fromJson(Json.java:692)
    ... 5 more

2 个答案:

答案 0 :(得分:2)

我发现了你的错误:

找不到字体文件:Razer.fnt ,如错误日志中所述。

请记住,您需要在同一文件夹结构中使用font.fnt文件和font.png文件,就像之前一样(我想在同一个文件夹中,就像您的JSON文件一样)。

希望有所帮助

€dit:进一步解释为什么你需要font.png
如果您查看.fnt文件,您将会看到,它只是文本,它描述了您的字体的.png。在这个.png中是字形。

答案 1 :(得分:-1)

在这里测试你的json

http://jsonlint.com/

你需要把你的字符串放在引号内,如下所示:

{   “com.badlogic.gdx.graphics.g2d.BitmapFont”:{ ...