每当我按空格键(拍摄导弹')时我都会收到此错误,而我根本无法找到解决方法。
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);
ss
是SpriteSheet
类,设置为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);
}
答案 0 :(得分:2)
如果您尝试对NullPointerException
引用执行操作(如方法调用),则会出现null
。
因此,如果您在此行g.drawImage(tex.missile, (int)x, (int)y, null);
上获得此异常,请检查以下变量之一是否为null
:
g
tex
x
y
x
的包装类,则 y
和Integer
可以为null。为图像观察者提供的null
参考(方法drawImage
的第四个参数)不会导致NullPointerException
,因此无需在那里进行更改。
答案 1 :(得分:0)
为了给出一个精确的答案,需要更广泛的描述,即你正在使用的框架等。从你写的内容我假设如下:
你自己写过这个渲染器了吗?你在使用框架吗?您实际定位的平台是什么?
这可能对您有所帮助: 我猜这个" g"尚未初始化或仅设置为null。尝试在代码崩溃的行之前设置断点,运行调试器并查看" g"包含的内容。如果它不指向null,则问题可能在其他地方。另请注意,您正在通过" null"作为最后一个参数,这里可能不允许这样做。 ;)