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

标签 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? is not convertible to 'FullBarClass'”。

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

最佳答案

因为 contact.bodyA.node 是一个可选的并且可能不是一个 FullBarClass,你不能简单地分配 body 节点对象到 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 - 从 contact.bodyA.node 获取自定义类属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31550556/

相关文章:

ios - 如何使用动态重用标识符设置和出列自定义 UITableViewCell?

ios - 从核心数据中获取 UIImage

ios - Swift:当应用程序在后台时调用 .requestLocation()

swift - 在 SpriteKit 中安排音频 - Swift

ios - swift 4 : FMDBdatabase - Unexpectedly found nil while unwrapping an Optional value

ios - scopeBar 第一次激活时不显示在 UISearchBar 下

ios - 更改数据源时 UICollectionView 中的平滑动画

ios - 使用 NSFormatter 格式化 NSString

swift - 怀疑在关闭时保留循环

swift - 在 SKScene 中设置重复背景