首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >在as3中从DisplayObject中删除孩子的最有效的方法是什么?(内存)

在as3中从DisplayObject中删除孩子的最有效的方法是什么?(内存)
EN

Stack Overflow用户
提问于 2011-08-14 10:01:42
回答 2查看 3K关注 0票数 1

在内存和垃圾回收方面,从精灵/电影剪辑中删除孩子最有效的方法是什么?

我至少看过三种方法。

简单的重新分配

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sprite = new Sprite();

null,然后是new

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sprite = null
sprite = new Sprite();

或者while删除(我很喜欢)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
while(sprite.numChildren > 0){   
    sprite.removeChildAt(0); 
}

我正在学习干净和良好的内存管理,任何有效的输入都将不胜感激,谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-08-14 10:30:04

removeChild或removeChildAt实际上不会从内存中删除Sprite或任何其他DisplayObject,它只会将其从显示列表中删除。这意味着如果您创建了1000个精灵并将它们添加到舞台(显示列表)中,然后在所有1000个精灵上使用removeChild,它们可能仍然永远存在于内存中。

要将其从内存中删除,应在所有引用对象中将其设置为null。

如果您真的想删除它,只需将其设为空并检查以下内容:

如果您在数组、矢量、字典或任何其他对象中使用了引用,请将其从对象中删除,将其设置为null或使用Array.splice()

  • Set removeChildAt

  • Remove removeChild =

将其拼接起来

您可以使用像EventManagedSprite这样的解决方案,它使用EventRemover使完全删除对象变得更容易。这在更大的项目中也会有帮助。

如果你想重用精灵/对象,但又想回收这些对象,你应该使用对象池。有关object pooling with AS3的更多信息

票数 5
EN

Stack Overflow用户

发布于 2011-08-14 10:14:28

removeChild / removeChildAt将DisplayObject从其父对象中删除;它仍然保留在内存中,如果需要,您可以在以后添加它(只要您有对它的引用)。

根据我的经验,removeChild + null赋值是删除DisplayObject并节省内存的最好方法。

干杯,

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7056181

复制
相关文章
AS3中的位操作
在AS3中位操作是非常快的,这里列出一些可以加快某些计算速度的代码片段集合。我不会解释什么是位运算符,也不会解释怎么使用他们,只能告诉大家如果想清楚其中的原理先认真学一下2进制.
py3study
2020/01/06
4160
MongoDB中删除document的方法
> db.users.remove({z:'abc'}) 删除记录 delete from users where z="abc" 默认remove没有带选项true/false的话,是删除匹配到的全部行记录.如果要只删除一条匹配到的记录可以使用:db.users.remove({z:'abc'},true)  > db.t1.deleteOne({name:'zzz'})    删除1条匹配的记录 > db.t1.deleteMany({name:'zzz'})  删除全部匹配的记录 > db.pos.remove({"age":{$gt:23}}) > db.users.remove({}) 删除users表全部记录 ## 有时候需要全量的删除数据,但是如果一次性执行下去可能把mongodb搞崩,可以使用下面的方法: echo "db.table_name.find().limit(1000).forEach(doc =>  {     db.table_name.remove({_id:doc._id})     } )" | mongo --port 27017 db_name
保持热爱奔赴山海
2019/09/17
1.4K0
python中字典中的删除,pop方法与popitem方法
Pop方法属于字典自带的方法,只需要传入一个参数,这个参数是字典的键,就可以对字典中的某个键值对进行删除。
刘金玉编程
2019/07/27
2.5K0
Android中检测内存的方法
我们经常在优化相机的内存,性能调优或者其相关引起的稳定性流程问题时,需要来针对系统内存大小判断来做camera flow相关客制化修改;
Abalone
2022/07/14
1.2K0
Android中检测内存的方法
AS3 内存回收机制
       AS3相对于以前版本的功能增强了很多,在赋予它重任时,同时也要它付出代价:垃圾收集器不再支持自动为你收集垃圾。本文中,我为大家整理了一些资料。首先,我们先来了解下垃圾收集器是个什么东西?
py3study
2020/01/08
7620
java数组删除元素_java中删除 数组中的指定元素方法[通俗易懂]
java中删除 数组中的指定元素要如何来实现呢,如果各位对于这个算法不是很清楚可以和小编一起来看一篇关于java中删除 数组中的指定元素的例子。
全栈程序员站长
2022/09/22
8.3K0
在 Linux 中永久并安全删除文件和目录的方法
引言 在大多数情况下,我们习惯于使用 Delete 键、垃圾箱或 rm 命令从我们的计算机中删除文件,但这不是永久安全地从硬盘中(或任何存储介质)删除文件的方法。 该文件只是对用户隐藏,它驻留在硬盘上的某个地方。它有可能被数据窃贼、执法取证或其它方式来恢复。 假设文件包含密级或机密内容,例如安全系统的用户名和密码,具有必要知识和技能的攻击者可以轻松地恢复删除文件的副本并访问这些用户凭证(你可以猜测到这种情况的后果)。 在本文中,我们将解释一些命令行工具,用于永久并安全地删除 Linux 中的文件。 1.
小小科
2018/05/04
4.6K0
在 Linux 中永久并安全删除文件和目录的方法
AS3中的单件(Singleton)模式
单件(singleton)模式在c#中是最容易实现的模式,其主要用意就在于限制使用者用new来创建多个实例。但在as3中,构造函数必须是public的(语法本身要求的),而且也不能在构造函数中抛出异常(编译可通过,但是逻辑行不通),因为这样相当于把创建实例的路子完全切断了,一个实例也得不到! 错误代码: package{ public class singleton{ static private var _instance:singleton; public function sin
菩提树下的杨过
2018/01/23
7880
从DataFrame中删除列
在操作数据的时候,DataFrame对象中删除一个或多个列是常见的操作,并且实现方法较多,然而这中间有很多细节值得关注。
老齐
2021/03/29
7.1K0
继承中的构造方法内存处理
实际上在面向对象第一天的讲解当中,我们对内存方面做了一些隐瞒。因为除了Object类,所有的类都是有父类的。但是我们在考虑内存图时忽略了这点,现在,我们来简单描述加入了子父类关系后的对象内存图。
星哥玩云
2022/09/14
4830
继承中的构造方法内存处理
PHPDOM中的children方法是什么
在PHP开发中,PHPDOM是一个非常常用的类库,该类库是基于DOM模型的PHP扩展,主要用于处理XML和HTML文档。而其中的children方法是一种非常重要的函数,用于获取某个元素的所有子元素。
用户10354340
2023/07/26
1500
Java中的内存映射缓存区是什么?
Java 中的内存映射缓存区(Memory-mapped buffer)是一种将文件或文件的一部分直接映射到程序内存中的技术。简单来说,内存映射缓存区允许 Java 程序在处理文件时像处理一个非常大的字节数组一样进行操作,而不用担心过多的 I/O 负担或频繁的磁盘访问。为了更好地理解内存映射缓存区,我将从底层实现和使用场景两个方面进行说明。
用户1289394
2023/08/22
3880
Java中的内存映射缓存区是什么?
浅谈在ASP.NET中数据有效性校验的方法
作为一名程序员,一定要对自己编写的程序的健壮性负责,因此数据的校验无论在商业逻辑还是系统实现都是必不可少的部分。
Java架构师必看
2021/03/22
9540
【说站】python中删除文档的方法
1、delete_one()方法删除文档。delete_one()需要一个查询对象参数。它只删除了第一次出现。
很酷的站长
2022/11/24
9000
【说站】python中删除文档的方法
关于AS3中Vector的sort排序
调用 $back.sort(sortRank);  注 : $back 是 vector.<RankPlayerModel>类型的
py3study
2020/01/08
4120
Redis 中的过期删除策略和内存淘汰机制
Redis 中 key 的过期删除策略 内存碎片如何产生 碎片率的意义 如何清理内存碎片 内存淘汰触发的最大内存 有哪些内存淘汰策略 内存淘汰算法 LRU LFU 1、定时删除 2、惰性删除 3、定期删除 Redis 中过期删除策略 从库是否会脏读主库创建的过期键 前言 Redis 中 key 的过期删除策略 内存淘汰机制 为什么数据删除后内存占用还是很高 总结 参考 Redis 中 key 的过期删除策略 ◆ 前言 Redis 中的 key 设置一个过期时间,在过期时间到的时候,Redis 是如何清除这个
IT大咖说
2022/04/22
9050
Redis 中的过期删除策略和内存淘汰机制
AS3的getBounds方法
1,这个getBound 在某些情况下非常实用.例如,聊天系统的聊天面板.做个这玩意的朋友,应该对着玩意都点熟悉.
py3study
2020/01/10
5790
String类型在JVM中的内存分配
字符串在Java中用的非常得多,Jvm为了减少内存开销和提高性能,使用字符串常量池来进行优化。
会说话的丶猫
2020/08/06
2.9K0
String类型在JVM中的内存分配
点击加载更多

相似问题

AS3中未显示DisplayObject

20

从内存中删除旧内容的更新表最有效的方法是什么?

23

从数组中删除的最简单方法是什么

30

Facebook数据到DisplayObject中的AS3

12

在javascript中从多维数组中删除元素最便携的方法是什么?

20
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文