舞台上有任意数量的对象实例。在任何给定时间,物体的数量可能在10到50之间。每个对象实例都可以移动,但移动是渐进的,当前坐标是不可预测的,并且在任何给定的时刻,我可能需要检索特定对象实例的坐标。
在这种情况下,是否有一个通用的最佳实践方法来跟踪对象实例坐标?我能想到两种方法:我在对象类中编写了一个函数,在任意事件执行时,在对象实例上被调用并返回该对象实例的坐标。
在对象类中,我声明了表示x和y值的全局静态变量,并且,在任意事件执行时,变量被更新为该对象实例的最新值。
虽然我可以让这两种方法都工作,但我不知道从长远来看,其中一种或另一种是否会对程序性能有害。我倾向于全局变量,因为我期望更新和调用变量比调用随后更新和调用变量的函数更少的资源密集。也许还有第三种选择?
我知道这是一个有点主观的问题。我问的是关于资源消耗的问题,所以请就此作答。我不明白…x
和y
属性都存储在对象(如果它是一个DisplayObject)和可读。为什么要把这些存储在全局变量中?
如果您不使用DisplayObject
作为基础,那么只需使用适当的getter自己创建属性。
如果你想获得所有对象的坐标,将它们添加到一个数组中,比如objectList
。
然后使用一个循环来检查值:
for each(var i:MovieClip in objectList)
{
trace(i.x, i.y);
}
我想我误解了这个问题。
肯定是1。为了提高代码的可读性,可以使用get属性,例如
public function get x():Number { return my_x; }
2的问题是,你可能还需要跟踪这些坐标对应的对象-更不用说它只是混乱…全局变量可能很快变得不可管理,因此所有这些对OOP和封装的研究,以及(大部分)对全局变量的需求。
只有50或更少的对象-甚至不考虑性能问题…
并记住那句古老的咒语-"过早优化是编程邪恶的根源";-)