将多次调用以下方法。我担心连续调用新的矩形会增加潜在的不必要的内存消耗,或者用于生成前一个矩形的内存被释放/覆盖以容纳另一个矩形,因为它被分配给同一个实例变量?
private function onDrag(evt:MouseEvent):void
{
this.startDrag(false, dragBounds());
}
private function dragBounds():Rectangle
{
var stagebounds = new Rectangle(0 - swatchRect.x, 0 - swatchRect.y, stage.stageWidth - swatchRect.width, stage.stageHeight - swatchRect.height);
return stagebounds;
}
答案 0 :(得分:4)
这是一个快速的问题,但非常重要!很少有ActionScript开发人员关注甚至考虑这些事情。所以对你赞不绝口!
每次创建新矩形时,都会为其分配新内存。一旦删除了对该矩形的所有引用,它就会变为符合条件的用于垃圾收集(GC),这意味着下次GC运行时它将从内存中释放。 (在这种情况下,当您致电stopDrag()
)
Rectangle
的实例占用很少的内存,并且垃圾收集器定期运行,实例将不断被清理。此外,我们可以确定,在没有先前的实例可用于GC的情况下,将在任何给定时间创建不超过一个。 (假设您在再次致电stopDrag
之前打电话给dragBounds
。)
真的,这是一个你不需要担心的情况。你的代码很好。在遇到任何潜在问题之前,您需要数千个矩形(一次数百万个)。