让我们开始吧,我有一个’handler’类,里面充满了getters和setters,并且其中包括添加和删除对象的代码,它看起来像这样:
public void addObject(GameObject object){
this.object.add(object);
}
public void removeObject(GameObject object){
this.object.remove(object);
请注意,“ GameObject”是一个类,所有对象都对该类进行扩展,
然后在此处创建一个对象,
if(mouseOver(mx, my, 840/2-100, 149, 200, 64)){
game.gameState = STATE.Game;
handler.addObject(new Player(0, 300, ID.Player,game.playerImg, game));
handler.addObject(new BasicEnemy(700, 300, ID.BasicEnemy, game.enemyImg, game));
handler.addObject(new F1Jutsu(400, 300, ID.F1Jutsu, game.f1jutsuImg, game));
}
内部参数是我要添加的对象的参数。当然,每个对象都是其自己的类。现在我想删除对象F1Jutsu(如果它的x值在游戏外部),并且该对象每秒向右移动一次(这样可以正常工作,因此我不会将其粘贴到此处,如果需要的话)
if(x > 800){
handler.removeObject(this);
}
我在“
tick”函数(在F1Jutsu类内部)中有一个类似运行函数的函数。问题是,一旦调用removeObject方法,我就会得到一个nullpointer异常,出现以下错误:
Exception in thread "Thread-2" java.lang.NullPointerException
at com.ninja.main.F1Jutsu.tick(F1Jutsu.java:24)
at com.ninja.main.Handler.tick(Handler.java:14)
at com.ninja.main.Game.tick(Game.java:110)
at com.ninja.main.Game.run(Game.java:87)
at java.lang.Thread.run(Unknown Source)
基本上,在F1Jutsu类中有一个NullPointerException(即删除null
??,但它是一个对象),在该类中被告知要删除对象,然后每个正在调用remove
object方法的位置以及每个调用place调用的位置放置了删除对象等导致错误。
我认为这个想法可能是对象的x值现在为null,这是nullpointer(?),但不确定,如果可以的话,我该如何解决?
抱歉,我的帖子很长(马铃薯?)
编辑:
F1Jutsu的第24行是:
if(x > 800){
handler.removeObject(this);
}
MRK我不确定您的意思,我在上面的代码中包括了在其中添加对象和在其中删除对象的部分。
编辑:
好的,经过大量工作,我得出的结论是,当我添加对象时,它会被添加为空图像。我必须问如何在不更改代码基础(参数)的情况下将其设置为某些内容(不为null)