(我正在使用HaxeFlixel的dev分支)
要创建一个新的FlxPoint
变量,我可以做以下三件事之一...
var pt:FlxPoint = new FlxPoint();
var pt:FlxPoint = FlxPoint.weak();
var pt:FlxPoint = FlxPoint.get();
通过阅读方法注释,我发现正在进行某种合并以加速创建
FlxPoint
。在什么情况下应该使用三种方式中的每一种来创建新的FlxPoint
?我有几个函数可以接受
FlxPoint
作为参数,或者返回它们。我应该复制FlxPoint
本身的功能,并使用.weak()
创建它们,并使用.putWeak()
回收传递给函数的点吗?在我看来,
.get()
是用于长期变量(玩家起始位置,存储在数组中的用于路径查找的点等),而.weak()
是用于临时变量(在函数内计算的中间值)。这是正确的吗? 最佳答案
FlxPoint
提供了一种池化机制,该机制应有助于减少垃圾收集。FlxPoint.get()
尝试从池中检索未使用的点。如果没有,则实际上与new FlxPoint()
相同。可以通过将put()
返回池中的任何一种来进行回收。weak()
与其说是长寿,不如说是用于库调用的(尽管这通常意味着它是短暂的)-以下是其文档:
这意味着在此示例中,您无需担心保留对枢轴点的引用并对其进行回收,因为rotate()
会为您对其调用putWeak()
:
point.rotate(FlxPoint.weak(0, 0), 45);