假设我有ArrayList
个对象 - 例如,屏幕上的精灵。
我遍历这些对象以计算他们接下来要做什么,但为了做到这一点,我必须保持他们之前的状态(例如,为了知道对象A
应该被移动到是的,我必须知道以前我们已经把它移到了右边。)
可以随时向ArrayList
添加或删除对象。
鉴于此对象没有一种方法来跟踪这一点,保持状态的最佳方法是什么?
答案 0 :(得分:2)
如果可以的话,最好的选择是将精灵类扩展为一个跟踪前一个位置的子类。是否可以执行此操作取决于ArrayList
来自何处:您可能控制或不控制实例的构建。
如果你不能,我会建议你使用这些对象中的HashMap
来存储你需要跟踪的状态(例如,之前的位置)。
更新后,您可以遍历ArrayList
,并在地图中查找每个对象以查找它曾经的位置。然后,您需要更新其在屏幕上的位置,并将之前位置的地图缓存更新为新位置。
另一种选择是创建一个包装对象,该对象包含一个sprite,并且还包含它之前的位置,然后将这些包装器对象存储在ArrayList
中。
答案 1 :(得分:0)
扩展对象并实现状态跟踪机制,然后使ArrayList获取这种新类型的对象。
答案 2 :(得分:0)
尝试使用LinkedList而不是ArrayList,以便跟踪前一个对象的状态。
答案 3 :(得分:-2)
这取决于你的逻辑,在真正意义上,没有最好的方法来保持以前的状态。但我在Object类中有一个static
变量来跟踪最后完成的事情的状态。因为static
变量或函数属于该类而不是对象的实例,因此它可用于跟踪影响该类的所有内容