我试图在我的游戏中移除一颗流星,因为它是一颗子弹,但似乎有一个错误,我现在还没有其他方法来删除该物体。
for (int i = 0; i < numA; i++) {
if (meteor[i].isVisible())
meteor[i].move();
else meteor[i].remove(i);
}
答案 0 :(得分:4)
你知道,实际上你应该使用Set
。数组的效率太低了。
要做到这一点,而不是声明一个数组:
private Meteor[] meteor = new Meteor[10];
声明Set
:
private Set<Meteor> meteor = new HashSet<Meteor>();
你可以添加流星:
meteor.add(newMeteor);
并删除它们:
meteor.remove(meteorToRemove);
并检查它们是否在集合中:
if (meteor.contains(met))
并迭代它们:
for (Meteor m : meteor)
答案 1 :(得分:1)
Apache在ArrayUtils
中有一个公共实用程序方法可以提供帮助。它的工作原理如下:
array = ArrayUtils.removeElement(meteor, elementToDelete)
查看文档以获取更多信息:Apache Docs
答案 2 :(得分:0)
for (int i = 0; i < numA; i++) {
if (meteor[i].isVisible())
meteor[i].move();
else {
Meteor[] result = new Meteor[meteor.length - 1];
System.arraycopy(meteor, 0, result, 0, i);
if (meteor.length != i) {
System.arraycopy(meteor, i + 1, result, i, meteor.length - i - 1);
}
meteor = result;
}
}