所以我正在阅读这个游戏教程,并且有代码可以让带有外星人/导弹的数组列表在碰撞时消失。
ArrayList ms = craft.getMissiles();
for (int i = 0; i < ms.size(); i++) {
Missile m = (Missile) ms.get(i);
Rectangle r1 = m.getBounds();
for (int j = 0; j<aliens.size(); j++) {
Alien a = (Alien) aliens.get(j);
Rectangle r2 = a.getBounds();
if (r1.intersects(r2)) {
m.setVisible(false);
a.setVisible(false);
}
}
}
在最后一个循环中,m.setVisible(false) 和 a.setVisible(false) 使特定的外星人/导弹不可见,但 'a' 和 'm' 不是 ArrayList 的一部分,它们是 ArrayList 对象被拉出并投射到 ' a' 和 'm' 但代码似乎可以正常工作,因为编码器没有将 'a' 或 'm' 对象插入回数组列表中的特定位置(或更新其在数组列表中的相应对象)。
这让我想到,'a' 和 'm' 是通过地址引用到数组列表中的第 i 个对象而不是副本吗?