Swift SpriteKit '($T15) -> $T16' 与 'SKEmitterNode' 不同

Swift SpriteKit '($T15) -> $T16' is not identical to 'SKEmitterNode'

我是新人Swift

我收到此错误:'($T15) -> $T16' is not identical to 'SKEmitterNode'

来自此代码:

func didBeginContact(contact: SKPhysicsContact) {
    let untypedEmitter : AnyObject = NSKeyedUnarchiver.unarchiveObjectWithFile(NSBundle.mainBundle().pathForResource("Explosion", ofType: "sks")!)!
    let emitter:SKEmitterNode = untypedEmitter as SKEmitterNode
    emitter.position = Player.position

    self.addChild(emitter)
    emitter(runAction(SKAction.sequence([SKAction.waitForDuration(0.1), SKAction.runBlock(emitter.particleBirthRate = 0)])))
}

错误在最后一行

截图:

我是运行XCode版本6.2

谢谢

您在调用节点上的 runAction 方法时使用了错误的语法。应该是

emitter.runAction(SKAction.sequence([SKAction.waitForDuration(0.1), SKAction.runBlock({emitter.particleBirthRate = 0})]))

注意从 emitter(runAction( ... ))emitter.runAction( ... ) 的变化。

编辑

另请注意,没有块传递给 runBlock。应该是

SKAction.runBlock({ /* code in here */ })

而不仅仅是

SKAction.runBlock( /* just code here wouldn't be inside of a block/closure */ )