【问题标题】:Stop SKEmitterNode to emit particles停止 SKEmitterNode 发射粒子
【发布时间】: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


【解决方案1】:

我发现这是我的代码的问题。我试图停止在计算机属性中创建的发射器节点,因此在访问它时分配了它。该实例显然不一样,并且发射器节点没有停止。这是我的建议。不要将计算机属性的语法与使用闭包初始化属性的语法混淆。这两段代码非常不同:

// Created only once
var laserButton: ParticlesLoadingButton = {
    let button = ParticlesLoadingButton(frame: CGRect(x: 100, y: 100, width: 200, height: 100))
    button.particleEffect = .Laser
    button.particleColor = UIColor.orangeColor()
    return button
}()

// Created every time it is accessed
var laserButton2: ParticlesLoadingButton {
    let button = ParticlesLoadingButton(frame: CGRect(x: 100, y: 100, width: 200, height: 100))
    button.particleEffect = .Laser
    return button
}

【讨论】:

    猜你喜欢
    • 2014-05-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多