2015-04-28 56 views
0

這是我的MenuScreen.java。這是一個可以從主類設置屏幕的類,並將顯示一個開始菜單。libgdx TextButton不能用於json

package com.game.screens; 

import com.badlogic.gdx.Game; 
import com.badlogic.gdx.Gdx; 
import com.badlogic.gdx.Screen; 
import com.badlogic.gdx.graphics.GL20; 
import com.badlogic.gdx.graphics.g2d.BitmapFont; 
import com.badlogic.gdx.graphics.g2d.TextureAtlas; 
import com.badlogic.gdx.scenes.scene2d.Stage; 
import com.badlogic.gdx.scenes.scene2d.ui.Skin; 
import com.badlogic.gdx.scenes.scene2d.ui.Table; 
import com.badlogic.gdx.scenes.scene2d.ui.TextButton; 
import com.badlogic.gdx.scenes.scene2d.ui.TextField; 

public class MenuScreen implements Screen 
{ 
    private Stage stage = new Stage(); 
    private Table table = new Table(); 

    private Skin skin = new Skin(Gdx.files.internal("skin.json"), 
     new TextureAtlas(Gdx.files.internal("testingStuff.pack"))); 

    private TextButton buttonPlay = new TextButton("Play", skin), 
     buttonExit = new TextButton("Exit", skin); 


    @Override 
    public void show() 
    { 
     table.add(buttonPlay).row(); 
     table.add(buttonExit).row(); 

     table.setFillParent(true); 
     stage.addActor(table); 

     Gdx.input.setInputProcessor(stage); 
    } 

    @Override 
    public void render(float delta) 
    { 
     Gdx.gl.glClearColor(0, 0, 0, 1); 
     Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT); 
     stage.act(); 
     stage.draw(); 
    } 

    @Override 
    public void resize(int width, int height) 
    { 

    } 

    @Override 
    public void pause() 
    { 

    } 

    @Override 
    public void resume() 
    { 

    } 

    @Override 
    public void hide() 
    { 
     dispose(); 
    } 

    @Override 
    public void dispose() 
    { 
     stage.dispose(); 
     skin.dispose(); 
    } 
} 

我想一個簡單的TEXT按鈕添加到我的應用程序,但每當我運行它,我得到這個錯誤涉及skin.json文件。

Exception in thread "LWJGL Application" com.badlogic.gdx.utils.SerializationException: Error reading file: skin.json 
at com.badlogic.gdx.scenes.scene2d.ui.Skin.load(Skin.java:97) 
at com.badlogic.gdx.scenes.scene2d.ui.Skin.<init>(Skin.java:82) 
at com.game.screens.MenuScreen.<init>(MenuScreen.java:21) 
at com.mygdx.game.MyGdxGame.create(MyGdxGame.java:22) 
at com.badlogic.gdx.backends.lwjgl.LwjglApplication.mainLoop(LwjglApplication.java:143) 
at com.badlogic.gdx.backends.lwjgl.LwjglApplication$1.run(LwjglApplication.java:120) 
Caused by: com.badlogic.gdx.utils.SerializationException: Error reading  file: skin.json 
at com.badlogic.gdx.utils.Json.fromJson(Json.java:683) 
at com.badlogic.gdx.scenes.scene2d.ui.Skin.load(Skin.java:95) 
... 5 more 
Caused by: com.badlogic.gdx.utils.SerializationException: Error parsing file: skin.json 
at com.badlogic.gdx.utils.JsonReader.parse(JsonReader.java:77) 
at com.badlogic.gdx.utils.Json.fromJson(Json.java:681) 
... 6 more 
Caused by: com.badlogic.gdx.utils.SerializationException: Error parsing JSON on line 1 near: : { 
"white": { "file": "skinTest.fnt" } 
}, 
"com.badlogic.gdx.scenes.scene2d.ui.TextButton$TextButtonStyle": { 
"default": { "font": white } 
} 
at com.badlogic.gdx.utils.JsonReader.parse(JsonReader.java:547) 
at com.badlogic.gdx.utils.JsonReader.parse(JsonReader.java:55) 
at com.badlogic.gdx.utils.JsonReader.parse(JsonReader.java:75) 
... 7 more 

回答

0

似乎與您的*.json文件有問題。它應該看起來像這樣:

{ 
    "com.badlogic.gdx.graphics.g2d.BitmapFont": { 
     "white": { "file": "skinTest.fnt" } 
    }, 
    "com.badlogic.gdx.scenes.scene2d.ui.TextButton$TextButtonStyle": { 
     "default": { "font": white } 
    } 
} 

它工作正常,我的*.fnt文件。也許你的*.fnt文件路徑是錯誤的。正常情況下,它應該位於android/assets/skinTest.fnt。如果您正在桌面上測試應用程序,則還應將工作目錄設置爲assets文件夾。 (我使用過Android Studio)