在计时器对象内重新创建一个新变量会降低性能吗



大家好,我想知道每次调用计时器对象时,在计时器对象内重新创建一个可变电影剪辑是否会降低性能或导致内存泄漏。这就是我现在设置的方式:

private function addSwimPowerUp(e:TimerEvent):void 
{
    var newSwimPower:mcSwimPower = new mcSwimPower();
    stage.addChild(newSwimPower);
    aSwimPowerUpArray.push(newSwimPower);
}

我在游戏中使用所有计时器对象。我应该将var newSwimPower声明为私有变量吗?

创建一个新的实例,然后不对其执行任何操作,将导致其最终的垃圾回收。也就是说,如果你的代码是这样的:

private function addSwimPowerUp(e:TimerEvent):void
{
    var newSwimPower:mcSwimPower = new mcSwimPower();
}

然后所有的新电影剪辑都会被清理干净。

话虽如此,您将把这些对象添加到显示树以及数组中。如果不同时从中删除对象,它将不会被垃圾收集,这将是内存泄漏。

newSwimPower创建一个类级变量并将其赋值不会有任何区别,只是如果你不垃圾收集引用它的类,那么你创建的最后一个实例仍将在内存中。

最新更新