从 ArrayList 中删除特定的索引对象并将其从后台删除



我正在尝试在我的游戏中实现生命计数器,但遇到了一些问题。生命由图像表示,因此当玩家失去生命时,将删除一个图像。我已经设法做到了这一点,但它以低效的方式完成(链式 if 语句等(,我正在寻找一种做得更好的方法。我添加了 ArrayList,然后当玩家死亡时,在某个索引处丢失了生命(并删除了图像(,我已经实现了它,但我认为我在某处出错了,因为我得到了"索引超出长度 0 的界限"异常。这是我得到的相关代码:

创建 5 个生命对象并将它们添加到背景中

background.addLife(new Lives("file:resources/frogLife.png", 30, 5, 5));
background.addLife(new Lives("file:resources/frogLife.png", 30, 40, 5));
background.addLife(new Lives("file:resources/frogLife.png", 30, 75, 5));
background.addLife(new Lives("file:resources/frogLife.png", 30, 110, 5));
background.addLife(new Lives("file:resources/frogLife.png", 30, 145, 5));

下面的在计时器上运行,如果动物死亡,它应该获取正确的大多数生命图像对象的索引,将其从背景中删除,从 ArrayList 中删除并减少生命数。

else if (animal.getDeathStatus() == true)
{
life = life.getLifeFromIndex(numOfLives);
background.removeLife(life);
life.removeLife(numOfLives);
numOfLives--;
}

lives 类,当创建此类型的对象时,应将其添加到 ArrayList 中

public void Lives extends ImageView
{
ArrayList<Lives> Lives = new ArrayList<Lives>();
public Lives(String imageLink, int size, int xpos, int ypos)
{
setImage(new Image(imageLink, size,size, true, true));
setX(xpos);
setY(ypos);
Lives.add(this);
}
public Lives getLifeFromIndex(int index)
{
return Lives.get(index);
}
public void removeLife(int index)
{
Lives.remove(index);
}
}

如果你添加 .isEmpty(( 在实际删除之前检查是否有要删除的内容怎么办?这将防止超出列表范围。

相关内容

  • 没有找到相关文章

最新更新