使用drawImage时使用NullPointerException(使用Slick2d)

时间:2014-07-24 03:19:48

标签: java nullpointerexception slick2d

在游戏开始时有一些基本代码,并且由于没有明显的原因而在这个令人讨厌的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,但是不显示图像,只显示空白的红色背景。

1 个答案:

答案 0 :(得分:-1)

你的方法

  

render(GameContainer arg0,StateBasedGame arg1,Graphics g)

没有得到任何Graphics对象,这就是为什么当你调用g上的任何方法时它给出NullPointException的原因 因为变量被分配了一个空值。

找出调用此方法的位置,并查看传递的参数是否正确。