在容器“BubbleContainer”中,我有多个“Bubble sprites”。 每个气泡的图形对象(圆圈)都会在计时器事件中更新。
假设我有50个泡泡精灵,每个圆的半径应该用数学公式更新。我该如何组织这个逻辑?
如何更新BubbleContainer中的所有Bubble精灵? (我应该调用bubble.update()函数还是对图形对象进行临时引用?)
我在哪里放数学逻辑? (作为静态函数?)
答案 0 :(得分:1)
尽可能少地打电话。我听到的静态比类方法慢。
答案 1 :(得分:1)
如果我是你,我会更加担心如何有效地进行数学运算而不是传递数据,因为你会浪费大量的时间。
我对此的建议是:
对BubbleContainer(或其他任何地方,但在一个地方而不是在每个对象内)进行所有计算
像Math.PI / 180
Precalc 2阵列/正弦和正弦矢量 余弦值。(得到的速度更快 他们来自阵列而不是 每次调用Math.sin / Math.cos)
将结果传递给Bubble精灵 在一次通话中(正如克里斯蒂指出的那样)
创建一个接受输入的函数 参数,全部数学和 回答答案。
对于每组输入(在每个输入上) 这个函数的cal):
首先看看是否 答案是在之前计算的,如果是的话 是从答案中检索出来的 字典。
如果不计算并将其添加到 回答字典。
在字典中创建一个条目 将输入值作为键和 作为价值回答。这样你就是 创建答案缓存。对于 复杂的,反复的计算与 输入数量相对较少 它的参数(如你的情况) 更快地检索你的答案 已经从字典中计算出来了 而不是做计算 再次。如果您使用数组而不是字典,我相信它会更快......
快速示例,未经优化,只是为了给您一个想法:
function multiply(x:int,y:int):int{
var retValue:int;
var key:String=String(x)+String(y);
if (answers[key]){ retValue=answers[key];}
else{ retValue=x*y; answers[key]=retValue;}
return retValue;
}