gpt4 book ai didi

java - 从Java中的游戏中删除对象(eclipse)

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:59:27 25 4
gpt4 key购买 nike

让我们开始吧,我有一个充满 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));
}

parameters里面的东西就是我要添加的对象的参数。当然,每个对象都是它自己的类。现在我想删除对象 F1Jutsu,如果它的 x 值在游戏之外,并且对象每秒向右移动(这是有效的,所以我不会把它粘贴在这里,如果被问到会做)

        if(x > 800){
handler.removeObject(this);
}

我在“tick”函数(在 F1Jutsu 类中)中有这个,就像一个运行函数。问题是,一旦调用 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??但它是一个对象),它被告知要删除对象,然后是调用 remove 对象方法的每个地方以及调用 remove 对象方法的所有地方调用删除对象等的地方被放置导致错误。
我认为这个想法可能是对象的 x 值现在为空,这是空指针(?)但不确定,如果是这样,我将如何解决这个问题?
很抱歉发了这么长的帖子(土 bean ?)
编辑:

F1Jutsu 的第 24 行是:

if(x > 800){
handler.removeObject(this);
}

MRK 我不确定你的意思,我在上面的代码中包括了我添加对象和删除对象的部分。
编辑:
好的,经过大量工作后我得出结论,当我添加对象时,它被添加为空图像。我必须问如何在不更改代码基础(参数)的情况下将其设置为某些内容(不为空)

最佳答案

您不应该在要删除的对象的代码块中间调用 remove 方法;即使它被删除,它也会尝试完成代码,但会失败,因为它的所有变量都将是 null。要修复此错误,我建议在您的 GameObject 类中添加一个名为 removedboolean。无需调用 handler.removeObject(this),只需将 removed 设置为 true。然后,您需要在 tick() 方法中的 Handler 类中添加几行代码,以检查并删除所有带有 removed 的对象> true 的值。像这样

for (int i = 0; i < object.size(); i++) {
if (object.get(i).removed)
object.remove(i);
}

关于java - 从Java中的游戏中删除对象(eclipse),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30420793/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com