SpriteKit中Node数量只增不降的原因和解决
来源:互联网 发布:苏黎世大学留学 知乎 编辑:程序博客网 时间:2024/06/05 15:38
上篇 SpriteKit代码动态调整sks文件中粒子的颜色 博客中的App,运行中发现场景中的Node数量不断在增多,并没有减少,只见内存占用不断变大,虽然增长幅度很小,但强迫症伤不起…
只有一个可能,Node没有被释放!
检查代码发现,动态生成的Node只有小球和粒子效果,将粒子产生的代码注释掉后发现Node数量恢复正常了!!!那么就是粒子没有从场景中删掉.
虽然粒子正常播放完后会hide,但并没有从删除掉…
所以我们写个Action吧:
if let fireParticles = SKEmitterNode(fileNamed: "FireParticles") { fireParticles.position = ball.position addChild(fireParticles) let actWait = SKAction.wait(forDuration: 2.5) let actBlk = SKAction.run { fireParticles.removeFromParent() } let seq = SKAction.sequence([actWait,actBlk]) fireParticles.run(seq) }
因为粒子播放时间是2.5秒,所以我们等待2.5后将其删除,其实SKAction还提供了一种更简单的方法,就是removeFromParent方法,上面的代码可以修改如下:
if let fireParticles = SKEmitterNode(fileNamed: "FireParticles") { fireParticles.position = ball.position addChild(fireParticles) let actWait = SKAction.wait(forDuration: 2.5) let actRemove = SKAction.removeFromParent() let seq = SKAction.sequence([actWait,actRemove]) fireParticles.run(seq) }
再次运行App,发现场景节点的数量始终保持不变,我们也就解决了这个问题.
0 0
- SpriteKit中Node数量只增不降的原因和解决
- 房价一直不降的原因
- 房价一直不降的原因
- 求助-关于C#分布式应用程序中服务器端内存只升不降的问题
- SpriteKit改变Node锚点其物理对象位置不正确的解决
- 关于Node.js的httpClieint请求报错ECONNRESET的原因和解决措施
- SpriteKit中节点的z-position
- [Android] 在ScrollView 中嵌套 GridView/ListView时只显示一行的原因和解决办法
- 关于解决WIN8或者其他系统只在桌面或文件管理器中右键时间慢的原因
- 面试题:给定一个数组,数组中只包含0和1。请找到一个最长的子序列,其中0和1的数量是相同的
- 猜sql server密码用sqlconnection的话cpu100%,内存只升不降。最后直接用odbc api解决。
- Spritekit中播放背景音乐
- SpriteKit中应用TexturePacker
- 解决ScrollView中嵌套ListView和GridView只显示一行的问题
- 关于c#中获取listbox中选中项的数量和所有选项的数量
- SpriteKit中令人迷惑的speedBy:duration:方法
- Spritekit中如何判断触摸点击的精灵
- SpriteKit中反转Action需要注意的问题
- 欢迎使用CSDN-markdown编辑器
- Build Binary Search Tree
- struts2项目中web.xml配置
- 特殊矩阵——稀疏矩阵
- 【LeetCode笔记】113. Path Sum II DFS搜索+记录节点
- SpriteKit中Node数量只增不降的原因和解决
- 腾讯云的使用(安装jdk和Tomcat)
- 494. Target Sum
- opencv学习(四十)之寻找图像轮廓findContours()
- 【SSLGZ 2644】线段树练习题一
- STL算法(非变动型算法)
- javascript兼容
- hdu 2476 String painter
- jsp 中文乱码