2015-07-08 4 views
1

Я скопировал и вставил файл uiskin.json для использования в пользовательском интерфейсе Scene2D, но по какой-то причине мой код по-прежнему терпит крах. Вот файл uiskin.json, который дает мне ошибку: стандарт JSON не разрешает идентификаторы. Это хранится в моей папке активов наряду с default.fnt, uiskin.atlas и uiskin.pngОшибка LibGDX JSON: стандарт JSON не разрешает идентификаторы

{ 
    com.badlogic.gdx.graphics.g2d.BitmapFont: { default-font: { file: default.fnt } }, 
    com.badlogic.gdx.graphics.Color: { 
    green: { a: 1, b: 0, g: 1, r: 0 }, 
    white: { a: 1, b: 1, g: 1, r: 1 }, 
    red: { a: 1, b: 0, g: 0, r: 1 }, 
    black: { a: 1, b: 0, g: 0, r: 0 }, 
}, 
    com.badlogic.gdx.scenes.scene2d.ui.Skin$TintedDrawable: { 
    dialogDim: { name: white, color: { r: 0, g: 0, b: 0, a: 0.45 } }, 
}, 
    com.badlogic.gdx.scenes.scene2d.ui.Button$ButtonStyle: { 
    default: { down: default-round-down, up: default-round }, 
    toggle: { down: default-round-down, checked: default-round-down, up: default-round } 
}, 
    com.badlogic.gdx.scenes.scene2d.ui.TextButton$TextButtonStyle: { 
    default: { down: default-round-down, up: default-round, font: default-font, fontColor: white }, 
    toggle: { down: default-round-down, up: default-round, checked: default-round-down, font: default-font, fontColor: white, downFontColor: red } 
}, 
    com.badlogic.gdx.scenes.scene2d.ui.ScrollPane$ScrollPaneStyle: { 
    default: { vScroll: default-scroll, hScrollKnob: default-round-large, background: default-rect, hScroll: default-scroll, vScrollKnob: default-round-large } 
}, 
    com.badlogic.gdx.scenes.scene2d.ui.SelectBox$SelectBoxStyle: { 
    default: { 
    font: default-font, fontColor: white, background: default-select, 
    scrollStyle: default, 
    listStyle: { font: default-font, selection: default-select-selection } 
    } 
}, 
    com.badlogic.gdx.scenes.scene2d.ui.SplitPane$SplitPaneStyle: { 
    default-vertical: { handle: default-splitpane-vertical }, 
    default-horizontal: { handle: default-splitpane } 
}, 
    com.badlogic.gdx.scenes.scene2d.ui.Window$WindowStyle: { 
    default: { titleFont: default-font, background: default-window, titleFontColor: white }, 
    dialog: { titleFont: default-font, background: default-window, titleFontColor: white, stageBackground: dialogDim } 
}, 
    com.badlogic.gdx.scenes.scene2d.ui.ProgressBar$ProgressBarStyle: { 
    default-horizontal: { background: default-slider, knob: default-slider-knob }, 
    default-vertical: { background: default-slider, knob: default-round-large } 
}, 
    com.badlogic.gdx.scenes.scene2d.ui.Slider$SliderStyle: { 
    default-horizontal: { background: default-slider, knob: default-slider-knob }, 
    default-vertical: { background: default-slider, knob: default-round-large } 
}, 
    com.badlogic.gdx.scenes.scene2d.ui.Label$LabelStyle: { 
    default: { font: default-font, fontColor: white } 
}, 
    com.badlogic.gdx.scenes.scene2d.ui.TextField$TextFieldStyle: { 
    default: { selection: selection, background: textfield, font: default-font, fontColor: white, cursor: cursor } 
}, 
    com.badlogic.gdx.scenes.scene2d.ui.CheckBox$CheckBoxStyle: { 
    default: { checkboxOn: check-on, checkboxOff: check-off, font: default-font, fontColor: white } 
}, 
    com.badlogic.gdx.scenes.scene2d.ui.List$ListStyle: { 
    default: { fontColorUnselected: white, selection: selection, fontColorSelected: white, font: default-font } 
}, 
    com.badlogic.gdx.scenes.scene2d.ui.Touchpad$TouchpadStyle: { 
    default: { background: default-pane, knob: default-round-large } 
}, 
    com.badlogic.gdx.scenes.scene2d.ui.Tree$TreeStyle: { 
    default: { minus: tree-minus, plus: tree-plus, selection: default-select-selection } 
}, 
    com.badlogic.gdx.scenes.scene2d.ui.Tooltip$TooltipStyle: { 
    default: { 
    label: { font: default-font, fontColor: white }, 
    background: default-pane 
    } 
}, 
} 

Кроме того, это код Java, что я до сих пор. Просто добавьте кнопку для справки, если кому-то нужно.

public class MyGdxGame extends ApplicationAdapter { 
    private Skin skin; 
    private TextField username, password; 
    private Stage stage; 

    @Override 
    public void create() { 
     skin = new Skin(Gdx.files.internal("uiskin.json")); 
     stage = new Stage(new ScreenViewport()); 

     final TextButton button = new TextButton("Click Me", skin, "default"); 
     button.setWidth(200); 
     button.setHeight(50); 

     stage.addActor(button); 
     Gdx.input.setInputProcessor(stage); 
    } 

    @Override 
    public void render() { 
     Gdx.gl.glClearColor(0, 0, 1, 1); 
     Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT); 

     stage.act(Gdx.graphics.getDeltaTime()); 
     stage.draw(); 
    } 
} 
+1

В строке 14 вашего JSON отсутствует имя. – Tenfour04

+0

О, извините, это была просто опечатка с моей стороны, когда я помещал ее в stackoverflow. У файла в моей программе есть это имя, и он все равно сбой, потому что он говорит, что файл не может быть прочитан. –

ответ

2

подсказка новая функция от libgdx она существует только на ночных сборках, так что вы не имеете его, вы, вероятно, скопировали из GitHub от libgdx и вы можете проверить here, что было добавлено 9 дней назад. Я проверил в моем недавно установленном libgdx, и всплывающей подсказки там нет, если вы попытаетесь импортировать его.

В основном удалить:

com.badlogic.gdx.scenes.scene2d.ui.Tooltip$TooltipStyle: { 
    default: { 
    label: { font: default-font, fontColor: white }, 
    background: default-pane 
    } 
}, 
+1

Спасибо! Я не знал этого. Это полностью устраняет мою проблему. –

+0

Хорошо :) удачи с вашим проектом – Opetion

0

Если бы ту же ошибку, а не с uiskin.json скопированный из вики. (реальный пример). Был ли какой-то поиск в Google, в другом вопросе (другая тема), и я увидел, что у json были двойные кавычки (") вокруг имен и атрибутов.

Таким образом, вместо:

com.badlogic.gdx.graphics.g2d.BitmapFont: { default-font: { file: default.fnt } }, 

сделать:

"com.badlogic.gdx.graphics.g2d.BitmapFont": { "default-font": { "file": "default.fnt" } }, 

Добавление в двойные кавычки все имена удалены ошибки Json standard does not allow identifiers. Нет подсказки, если он работает без двойных кавычек во время выполнения, поскольку это вызывает ошибку в json-файле.