【发布时间】:2016-02-09 16:47:34
【问题描述】:
我有一个SKEmitterNode,我试图在按下按钮时停止它。我以这种方式添加我的节点:
let followLine = SKAction.followPath(border.CGPath, asOffset: false, orientToPath: true, duration: 2.0)
let loopAction = SKAction.repeatActionForever(followLine)
emitterNode.targetNode = scene
emitterNode.runAction(loopAction, withKey: "loop")
addChild(emitterNode)
我将emitterNode添加到我的SKScene,当我想停止粒子时,我尝试了所有这些可能的方法:
let action = SKAction.runBlock { [weak self] in
self?.emitterNode.particleBirthRate = 0
}
emitterNode.runAction(action)
emitterNode.removeAllActions()
emitterNode.removeFromParent()
removeAllActions()
let remove = SKAction.removeFromParent()
emitterNode.removeActionForKey("loop")
emitterNode.runAction(remove)
发射器不会停止,动画会继续。
【问题讨论】:
-
您是在模拟器上测试还是使用实际设备?因为根据我使用的设备(设备 vs sim)和我使用的 iOS 版本,我得到了非常不同的结果。
-
你能发布一个指向你的粒子发射器的链接吗..以及我需要让它运行的任何代码..比如border.CGPath变量。如果你这样做,我可以试一试。
-
@Whirlwind 我正在模拟器上测试 iOS 9.3 beta 2 和 Xcode 7.3 beta 2。
-
@hamobi 我刚刚编辑了原始帖子,并包含了指向粒子发射器和图像文件的链接。您可以设置您拥有的任何 UIView 的任何border.CGPath。在我的情况下,我只有一个 UIView。如果您还需要什么,请告诉我。
-
@BalestraPatrick 请注意,如果您对真实结果感兴趣,则应始终在真实设备上进行测试。无论如何,我能够停止在模拟器和设备上发射粒子(我在 iOS9.1 和 Xcode 7.1.1 上)可能值得一提的是,我遇到了另一个与发射器的 targetNode 属性相关的问题,但仍然我可以通过从其父级移除发射器或将particleBirthRate 属性设置为零来停止发射。
标签: sprite-kit uikit skscene skemitternode