在游戏开始时有一些基本代码,并且由于没有明显的原因而在这个令人讨厌的NullPointerException中遇到了一些问题。
Loader.java(主要类)
public class Loader extends StateBasedGame {
public static final int menu = 0;
public static final int ingame = 1;
public Loader() {
super("insertGameName");
this.addState(new Menu(menu));
this.addState(new Ingame(ingame));
}
public static void main(String args[]) throws SlickException {
AppGameContainer gameContainer = new AppGameContainer(new Loader());
gameContainer.setDisplayMode(rpg.Settings.WIDTH, rpg.Settings.HEIGHT, false);
gameContainer.setVSync(true);
try {
gameContainer.start();
} catch (SlickException e) {
e.printStackTrace();
}
}
public void initStatesList(GameContainer arg0) throws SlickException {
this.getState(0).init(arg0, this);
// this.getState(1).init(arg0, this);
this.enterState(menu);
}
}
和Menu.java(初始游戏状态)
public class Menu extends BasicGameState {
Image logo;
public Menu(int menu) {
}
public void init(GameContainer arg0, StateBasedGame arg1) throws SlickException {
logo = new Image("res/logo.png");
}
public void render(GameContainer arg0, StateBasedGame arg1, Graphics g) throws SlickException {
g.setBackground(Color.red);
g.drawImage(logo, 0, 0);
}
public void update(GameContainer arg0, StateBasedGame arg1, int arg2) throws SlickException {
}
public int getID() {
return 0;
}
}
NullPointerException位于Menu.java:23(g.drawImage(logo,0,0); 我的印象是所有这些代码都已正确完成,所以当我发现其他情况时,我感到很惊讶。
旁注:当稍微摆弄代码时,我发现在'newImage(“res / logo.png”)的g.drawImage(logo,0,0)中更改'logo'会停止NullPointerException,但是不显示图像,只显示空白的红色背景。
答案 0 :(得分:-1)
你的方法
render(GameContainer arg0,StateBasedGame arg1,Graphics g)
没有得到任何Graphics对象,这就是为什么当你调用g
上的任何方法时它给出NullPointException的原因
因为变量被分配了一个空值。
找出调用此方法的位置,并查看传递的参数是否正确。