从 contact.bodyA.node 获取自定义 class 属性
Getting custom class property from contact.bodyA.node
我正在开发一个 IOS 游戏,我在使用 didBeginContact() 时遇到了一些问题。
我正在尝试从我的自定义 类、"FullBarClass" 中获取差异 属性。这是一些代码:
func didBeginContact(contact: SKPhysicsContact) {
var a: SKPhysicsBody
var b: SKPhysicsBody
if contact.bodyA.categoryBitMask < contact.bodyB.categoryBitMask{
a = contact.bodyA
b = contact.bodyB
} else {
b = contact.bodyA
a = contact.bodyB
}
let bar : FullBarClass = contact.bodyA.node
let dif = Int(bar.difference)
println(dif)
}
在 "let bar : ..." 行,我收到一个错误:"SKNode? is not convertible to 'FullBarClass' "。
有人知道为什么这不起作用吗?
由于 contact.bodyA.node
是可选的 而 可能不是 FullBarClass
,您不能简单地将正文节点对象分配给 FullBarClass
常数。如果对象是合适的类型,您可以有条件地将对象分配给 bar
if let bar = contact.bodyA.node as? FullBarClass {
// This will only execute if body node is a FullBarClass
let dif = Int(bar.difference)
print(dif)
}
我正在开发一个 IOS 游戏,我在使用 didBeginContact() 时遇到了一些问题。
我正在尝试从我的自定义 类、"FullBarClass" 中获取差异 属性。这是一些代码:
func didBeginContact(contact: SKPhysicsContact) {
var a: SKPhysicsBody
var b: SKPhysicsBody
if contact.bodyA.categoryBitMask < contact.bodyB.categoryBitMask{
a = contact.bodyA
b = contact.bodyB
} else {
b = contact.bodyA
a = contact.bodyB
}
let bar : FullBarClass = contact.bodyA.node
let dif = Int(bar.difference)
println(dif)
}
在 "let bar : ..." 行,我收到一个错误:"SKNode? is not convertible to 'FullBarClass' "。
有人知道为什么这不起作用吗?
由于 contact.bodyA.node
是可选的 而 可能不是 FullBarClass
,您不能简单地将正文节点对象分配给 FullBarClass
常数。如果对象是合适的类型,您可以有条件地将对象分配给 bar
if let bar = contact.bodyA.node as? FullBarClass {
// This will only execute if body node is a FullBarClass
let dif = Int(bar.difference)
print(dif)
}