2016-06-07 7 views
0

Ich habe default.json Datei für die Einstellung der Haut zu UI-Komponente. Der Speicherort der Datei war zuvor im Projektpaket Kern/src/com/MyGame, die die folgenden Daten hat:Fehler beim Laden von JSON-UI-Skin-Datei von Android/Assets

{ 
    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 
    } 
    } 
} 

Dann würde ich diese Datei in onCreate Methode laden skin = new Skin(Gdx.files.internal("default.json")); Welche funktioniert.

Aber jetzt habe ich beschlossen, diese Datei in android-Projekt in Assets Ordner namens ui-skins/ zu verschieben. Das Problem ist, ich bin immer einen Fehler, wenn ich versuche, aus dieser Datei zu laden Pfad 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

Hast du vergessen, Razer.fnt auch in das Verzeichnis 'ui-skins/'im Verzeichnis android assets zu verschieben? – Tenfour04

+0

Danke, das war eines der Probleme. – Kapparino

Antwort

2

Ich habe Ihren Fehler gefunden:

Schriftart Datei nicht gefunden: Razer.fnt wie im Fehlerprotokoll angegeben.

Denken Sie daran, dass Sie Ihre Datei font.fnt UND Ihre Datei font.png in der gleichen Ordnerstruktur benötigen, wie es zuvor war (ich denke im selben Ordner wie Ihre JSON-Datei).

Hoffnung, die

€ dit hilft: Eine weitere Erklärung, wie, warum Sie die font.png benötigen
Wenn Sie Ihre .fnt Datei suchen in Sie werden sehen, es ist nur Text, der die .png Ihrer beschreibt Schriftart. In diesem .png sind die Glyphen.

-1

Test Ihre json hier

http://jsonlint.com/

Sie benötigen, um Ihre Strings in Anführungszeichen zu setzen, wie dies:

{ "com.badlogic.gdx.graphics.g2d.BitmapFont": { ...

+0

In LibGDX nicht notwendig. Der LibGDX Json-Parser benötigt keine Anführungszeichen. – Tenfour04