2010-07-30 45 views
0

我的闪存应用程序出现问题,因为一段时间后它正在运行,它最终开始变慢。我的应用程序涉及需要使用addChild()方法复制的内容。我已经阅读了互联网上的一些信息,其中指出,应用程序放缓或滞后的原因是removeChild()不会从存储器中删除子项。Flash应用程序变慢[removeChild]

有没有什么方法可以将孩子从记忆中移除呢?任何输入赞赏。谢谢。

回答

1

看起来您正在创建新对象,并将其添加到舞台上,并从舞台上删除不需要的对象,这可能会导致速度变慢,因为内存中会有大量不需要的对象。在闪存AS3中,你不能完全依靠GC进行垃圾清理。所以最好的方法是尽可能少地生成垃圾,并在需要新对象时回收未使用的对象。例如,一个应用程序不停地在舞台上放一些圆圈,并以固定的时间间隔去除其中的一些。所以这种资源实现资源池。

public class ResourcePool { 
    static function getCircle(prop:Object):Circle { 
    //check if you already have some circle objects 
    //if yes pick one apply the prop and return 
    // else create a new circle with specified prop and return 
    } 
    static function recycle(circle:Circle):void { 
    //add it to available resource array 
    } 
}
现在,当您需要一个圆形对象时,请询问ResourcePool:
var c:Circle = ResourcePool.getCircle(someProperty);
每当您删除一个圆时,请妥善回收它,以便以后使用它。
//remove circle1 object 
ResourcePool.recycle(circle1);