渲染时出现NullPointerException错误

时间:2014-11-01 23:15:14

标签: java exception nullpointerexception lang

每当我按空格键(拍摄导弹')时我都会收到此错误,而我根本无法找到解决方法。

Exception in thread "Thread-0" java.lang.NullPointerException
    at com.game.main.Bullet.render(Bullet.java:26)
    at com.game.main.Controller.render(Controller.java:58)
    at com.game.main.Game.render(Game.java:155)
    at com.game.main.Game.run(Game.java:108)
    at java.lang.Thread.run(Thread.java:745)

我将列出错误中的代码,因为我有9个类。

Bullet错误行:

g.drawImage(tex.missile, (int)x, (int)y, null);

tex.missile是纹理类中的BufferedImage变量,设置为

missile = ss.grabImage(2, 1, 32, 32);

ssSpriteSheet类,设置为new SpriteSheet(game.getSpriteSheet());

SpriteSheet课程只获得SpriteSheet,只需将每个方格设置为行/列等。所有内容均可用作我的播放器和播放器。敌人都工作。

控制器错误行:

tempBullet.render(g);

Game.render错误行:

c.render(g);

Game.run错误行:

render();

我非常怀疑它与Game类有什么关系,或类似的东西,但我认为它与Bullet类有关,但又一次。我可以,而且很可能是错的。我认为可能没有正确设置。

如果你想让我展示全班,我会的。告诉我你需要哪一个。

编辑: g.drawImage在此方法中

public void render(Graphics g){ 
    g.drawImage(tex.missile, (int)x, (int)y, null);
}

2 个答案:

答案 0 :(得分:2)

如果您尝试对NullPointerException引用执行操作(如方法调用),则会出现null。 因此,如果您在此行g.drawImage(tex.missile, (int)x, (int)y, null);上获得此异常,请检查以下变量之一是否为null

  • g
  • tex
  • x
  • y
如果您使用类似x的包装类,则

yInteger可以为null。为图像观察者提供的null参考(方法drawImage的第四个参数)不会导致NullPointerException,因此无需在那里进行更改。

答案 1 :(得分:0)

为了给出一个精确的答案,需要更广泛的描述,即你正在使用的框架等。从你写的内容我假设如下:

  • 你用Java写作。
  • 您正在开展游戏。
  • 您正在使用某个渲染器渲染内容。

你自己写过这个渲染器了吗?你在使用框架吗?您实际定位的平台是什么?

这可能对您有所帮助: 我猜这个" g"尚未初始化或仅设置为null。尝试在代码崩溃的行之前设置断点,运行调试器并查看" g"包含的内容。如果它不指向null,则问题可能在其他地方。另请注意,您正在通过" null"作为最后一个参数,这里可能不允许这样做。 ;)