上篇 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,发现场景节点的数量始终保持不变,我们也就解决了这个问题.
作者:mydo 发表于2017/4/15 16:26:36 原文链接
阅读:96 评论:0 查看评论