我有一个包含tile的数组列表。当我放置新贴图时,新贴图会被放置在旧贴图上,但旧贴图仍然在那里,可能会导致问题。例如,存在一个玩家无法通过的石头贴图。一个空气贴图被放置在那里,让玩家可以通过。然而,石头贴图永远不会被删除,所以玩家无法通过,因为石头贴图是固体的,会导致碰撞。我能把tile从数组列表中删除吗?我认为我做不到,因为那样的话,列表中的其他数据将会"移动",并填补旧数据块原来所在的位置。我怎样才能在不引起其余数据移位的情况下删除该贴图并在其上放置一个新贴图呢?
应该使用ArrayList的set(int index, E element)
方法
Acc。Javadocs:
将此列表中指定位置的元素替换为指定元素
如果您想从ArrayList
中删除一个项目,并且仍然希望列表的其余部分保持原状,只需将其替换为null
,这是授权的:
myList.set(i, null);
当然,这意味着你必须在使用它的时候测试它的值
可以使用ArrayList的set()方法将列表中的一个对象"替换"为另一个对象。
tileList.set(index, newTileObject);
将用新的tile对象替换索引处的tile。
使用带有enum的Tile
对象来存储其状态:
public class Tile {
public enum State = { WALL, OPEN };
private State state;
public void setState(State state) {
this.state = state;
}
}
当你需要在开放空间和墙壁之间切换时,你只需要改变它的状态:
tile.setState(State.WALL);