2016-06-07 58 views
0

我有default.json文件来设置皮肤到UI组件。该文件的位置以前是在项目包核心/ src目录/ COM/mygame,它具有以下数据:从android/assets加载json ui-skin文件时出错

{ 
    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/的资产文件夹中的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

您是否忘记将Razer.fnt移动到Android资产目录中的相同'ui-skins /'目录? – Tenfour04

+0

谢谢你,那是问题之一。 – Kapparino

回答

2

我发现你的错误:在错误日志指出Razer.fnt:找不到

字体文件。请记住,您需要在同一个文件夹结构中使用font.fnt文件和font.png文件,因为它之前(我猜想与您的JSON文件位于同一个文件夹中)。

希望帮助

€DIT:如为什么你需要的font.png
如果你看着你的.FNT文件,你会看到进一步的解释,这只是文字,它描述的巴纽你字体。在这个.png中是字形。

-1

测试你在这里

http://jsonlint.com/

你需要把你的字符串引号内,如JSON这样的:

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

+0

LibGDX中不需要。 LibGDX Json解析器被设计为不需要引号。 – Tenfour04