从contact.bodyA.node获取自定义类属性

时间:2015-07-21 22:13:38

标签: ios swift sprite-kit xcode6.4

我正在开发IOS游戏,我遇到了与didBeginContact()的一些问题。

我正在尝试从我的一个自定义类“FullBarClass”获取.difference属性。这是一些代码:

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?无法转换为'FullBarClass'”。

有人知道为什么这不起作用吗?

1 个答案:

答案 0 :(得分:2)

由于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)
}