让我们开始吧,我有一个“处理程序”类,它充满了 getter 和 setter,并且其中包含添加和删除对象的代码,它看起来像这样:
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 类中)中有这个函数,它就像一个 run 函数。问题是,一旦调用removeObject方法,我就会得到一个空指针异常,出现以下错误:
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??但它是一个对象),它被告知删除对象,然后每个调用删除对象方法的地方以及调用该地方的地方调用放置删除对象等会导致错误。
我认为这个想法可能是对象的 x 值现在为空,即空指针(?),但不确定,如果是这样,我将如何解决这个问题?
很抱歉这篇长文(土豆?)
EDIT:
F1Jutsu的第24行是:
if(x > 800){
handler.removeObject(this);
}
MRK 我不确定你的意思,我在上面的代码中包含了添加对象和删除对象的部分。
EDIT:
好吧,经过大量工作,我得出的结论是,当我添加对象时,它会作为空图像添加。我必须问如何将其设置为某个值(不为空)而不更改我的代码的基础(参数)