【发布时间】:2016-08-18 19:55:45
【问题描述】:
我使用 copy() 方法创建了新的 SKEmitterNode 对象。之后我尝试编写emitter.position,但Xcode说“对成员'位置'的模糊引用”。但是,当我使用类型转换«as!在«copy()»之后的SKEmitterNode»,一切正常。请你解释一下,为什么我需要使用«as!»在这种情况下?我无法理解这一点,因为当我在调试器中检查 «emit» 变量的值类型时,我可以看到它已经具有 SKEmitterNode 类型,即使没有使用 «as!在«copy()»之后的SKEmitterNode»。
class GameScene: SKScene, SKPhysicsContactDelegate {
let bangEmitter : SKEmitterNode = SKEmitterNode(fileNamed: "MyParticle")!
func makeBang(position: CGPoint) {
// this method causes an error in second line
// but, emit is already have type SKEmitterNode, as debugger says
var emit = bangEmitter.copy()
emit.position = position
// this works ok
var emit = bangEmitter.copy() as! SKEmitterNode
emit.position = position
}
}
【问题讨论】:
标签: swift sprite-kit swift2