Sim*_*kie 1 memory-management actionscript-3
在内存和垃圾收集方面,从sprite/movieclip中删除子节点的最有效方法是什么?
我已经看到了至少三种方式.
简单的重新分配
sprite = new Sprite();
Run Code Online (Sandbox Code Playgroud)
null然后是new
sprite = null
sprite = new Sprite();
Run Code Online (Sandbox Code Playgroud)
或删除(我喜欢)
while(sprite.numChildren > 0){
sprite.removeChildAt(0);
}
Run Code Online (Sandbox Code Playgroud)
我只是学习干净和良好的内存管理,任何VALID输入将不胜感激,谢谢.
removeChild或removeChildAt实际上并没有从内存中删除Sprite或任何其他DisplayObject,它只是从displaylist中删除它.这意味着如果您创建1000个精灵并将它们添加到舞台(displaylist),然后在所有1000个精灵上使用removeChild,它们仍然可以永久存在于内存中.
要从内存中删除它,应在所有引用对象上将其设置为null.
如果你真的想要删除它,只需将其置空并检查以下内容:
您可以使用像EventManagedSprite这样的解决方案,它使用EventRemover使其更容易完全删除对象.这对于更大的项目也有帮助.
如果要重新使用sprite/object,但想要回收对象,则应使用对象池.有关使用AS3进行对象池的更多信息:
| 归档时间: |
|
| 查看次数: |
3009 次 |
| 最近记录: |