2014-11-01 73 views
0

我得到这个错误,每当我按下空格键(拍摄“导弹”),我不能找出如何解决它,在所有。NullPointerException异常错误与渲染

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班,或类似的东西,但我认为这与有关班,但又一次。我可能是,很可能是错的。我认为有些东西可能设置不正确。

如果你要我表现出全班同学,我会的。告诉我你需要哪一个。

编辑: g.drawImage是这种方法

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

当你调用'g.drawImage(...)'时,'g'是什么类型? – Foggzie 2014-11-01 23:18:17

+2

测试其中的一个是否为空:'g','tex','x'或'y'(如果使用像Integer这样的包装类,则x和y可以为null)。 – Tom 2014-11-01 23:19:08

+0

@GuntherFox最有可能是'Graphics'实例:http://docs.oracle.com/javase/7/docs/api/java/awt/Graphics.html#drawImage%28java.awt.Image,%20int,%20int ,%20java.awt.image.ImageObserver%29 – Tom 2014-11-01 23:19:46

回答

2

如果您试图对null引用执行动作(如方法调用),则会发生A NullPointerException。 所以,如果你在这条线g.drawImage(tex.missile, (int)x, (int)y, null);得到此异常,然后检查以下变量之一是null

  • g
  • tex
  • x
  • y

xy可以为null ,如果你使用类似Integer的包装类。为图像观察者提供的null参考(方法drawImage的第四个参数)不会导致NullPointerException,因此不需要在那里更改某些内容。

+0

http://stackoverflow.com/questions/218384/what-is-a-nullpointerexception-and-how-do-i-fix-it – xenteros 2016-09-28 11:51:10

+0

@xenteros我知道(现在;这个答案是2岁),但这个答案已被接受,我不能再删除它。 – Tom 2016-09-28 12:14:19

0

为了给出一个答案precie,更宽的描述是必要的,即你使用的是什么框架等内部从你写的我假设如下:

  • 您正在用Java编写。
  • 您正在制作游戏。
  • 您使用一些渲染器渲染的东西。

你写的渲染程序自己呢?你在使用框架吗?你实际上瞄准了哪个平台?

这可能已经帮您: 我猜想,“G”尚未初始化或只是设置为null。尝试在代码崩溃的行之前设置断点,运行调试器并查看“g”包含的内容。如果它不指向null,则问题可能在其他地方。另外请注意,您传递的是“null”作为最后一个参数,这在这里可能不被允许。;)

相关问题