我刚开始玩slick2d的基于状态的游戏结构。我按如下方式设置了主要课程
public static final int newMenu = 0;
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
AppGameContainer appgc;
try {
appgc = new AppGameContainer(new StateBased("StateBased Test"));
appgc.setDisplayMode(640, 360, false);
appgc.start();
} catch (SlickException e) {
}
}
public StateBased(String name) throws SlickException {
super(name);
this.addState(new NewMenu(newMenu));
}
@Override
public void initStatesList(GameContainer gc) throws SlickException {
this.getState(newMenu).init(gc, this);
}
现在到目前为止新的菜单类已经
了 private final int state;
private final Image bg;
private final static String directory = "Images/StartScreen/";
public NewMenu(int state) throws SlickException {
this.state = state;
bg = new Image(directory + "loadbg.png");
}
但我在“bg = new image”行遇到错误。 “当前线程中没有找到OpenGL上下文。”我很困惑因为我在使用basicgame而不是statebasedgame
时没有这个任何人都可以帮我解决这个问题
这是完整的错误
线程“main”中的异常java.lang.RuntimeException:没有OpenGL 在当前线程中找到的上下文。在 或者.gwon。 org.lwjgl.opengl.GL11.glGetError(GL11.java:1299)at at org.newdawn.slick.opengl.renderer.ImmediateModeOGLRenderer.glGetError(ImmediateModeOGLRenderer.java:384) 在 org.newdawn.slick.opengl.InternalTextureLoader.getTexture(InternalTextureLoader.java:249) 在 org.newdawn.slick.opengl.InternalTextureLoader.getTexture(InternalTextureLoader.java:187) 在org.newdawn.slick.Image。(Image.java:192)at org.newdawn.slick.Image。(Image.java:166)at org.newdawn.slick.Image。(Image.java:154)at org.newdawn.slick.Image。(Image.java:132)at statebased.NewMenu。(NewMenu.java:23)at statebased.StateBased。(StateBased.java:36) 在 statebased.StateBased.main(StateBased.java:27)
答案 0 :(得分:1)
通过将代码从构造函数移动到init方法
来解决