【发布时间】:2015-05-26 00:10:57
【问题描述】:
我在为我的应用程序创建选择框时遇到问题。我在其他任何地方都找不到解决方案。
我的代码:
public class OptionsMenu implements Screen{
private Stage stage = new Stage();
private Skin skin = new Skin(Gdx.files.internal("jsonurlhere"), new TextureAtlas(Gdx.files.internal("atlasurlhere")));
private String[] viewmodes = new String[] {"Fullscreen", "Windowed"};
private SelectBox<String> viewmode;
@Override
public void show() {
viewmode = new SelectBox<String>(skin);
viewmode.setItems(viewmodes);
viewmode.setSelected("Fullscreen");
stage.addActor(viewmode);
}
@Override
public void render(float delta) {
Gdx.gl.glClearColor(100, 100, 100, 1);
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
stage.act();
stage.draw();
}
}
注意:这不是完整的代码,只是选择框的相关部分。
我的错误:
Exception in thread "LWJGL Application" java.lang.NullPointerException
at com.badlogic.gdx.scenes.scene2d.ui.SelectBox.layout(SelectBox.java:193)
at com.badlogic.gdx.scenes.scene2d.ui.Widget.validate(Widget.java:88)
at com.badlogic.gdx.scenes.scene2d.ui.SelectBox.getPrefWidth(SelectBox.java:290)
at com.badlogic.gdx.scenes.scene2d.ui.SelectBox.<init>(SelectBox.java:80)
at com.badlogic.gdx.scenes.scene2d.ui.SelectBox.<init>(SelectBox.java:71)
at com.lockedprogramming.pacificblitz.screens.OptionsMenu.show(OptionsMenu.java:49)
at com.badlogic.gdx.Game.setScreen(Game.java:61)
at com.lockedprogramming.pacificblitz.PacificBlitz.create(PacificBlitz.java:18)
at com.badlogic.gdx.backends.lwjgl.LwjglApplication.mainLoop(LwjglApplication.java:143)
at com.badlogic.gdx.backends.lwjgl.LwjglApplication$1.run(LwjglApplication.java:120)
Eclipse 在运行前没有显示错误,如果我注释掉以下行,程序不会抛出异常:
//viewmode = new SelectBox<String>(skin);
//viewmode.setItems(viewmodes);
//viewmode.setSelected("Fullscreen");
//stage.addActor(viewmode);
编辑:我的 .json 代码:
{
com.badlogic.gdx.scenes.scene2d.ui.SelectBox$SelectBoxStyle: {
default: {
font: menufontblack, background: menubuttondefault,
listStyle: { font: menufontblack, selection: menubuttonhover },
},
},
}
【问题讨论】:
-
请同时显示你皮肤的 json 文件。 SelectBox 样式似乎有问题。
-
刚刚添加了@donfuxx