swift - Sprite Kit 和类型推断

标签 swift sprite-kit

所以我正在构建一个 Sprite Kit 游戏,在某个时刻我想在某些节点上启用/禁用重力。

我设法做到了,但我只是想知道是否有更好的方法来实现这一目标。

这是我的代码:

func enableGravity() {
    for rawBubble in container!.children {
        let bubble = rawBubble as SKShapeNode
        bubble.physicsBody?.dynamic = true
    }
}

当不对 rawBubble 使用类型推断时,我收到此错误:SKPhysicsBody?没有名为dynamic的成员

我想这实际上并不是 Sprite Kit 相关的问题,而是 Swift 本身的问题。是否有可能以更简单的方式做到这一点?

谢谢。

最佳答案

由于 container!.children 是一个 [AnyObject],因此您必须先转换其内容,然后才能对其进行任何有用的操作。我能想到的最简洁的方法就是将其强制转换为 for 语句中的 [SKNode] :

func enableGravity() {
    for bubble in container!.children as [SKNode] {
        bubble.physicsBody?.dynamic = true
    }
}

关于swift - Sprite Kit 和类型推断,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26613187/

相关文章:

swift - 只要用户点击按钮,我就想更改按钮的图像?

swift - 在 SpriteKit SKPhysicsContactDelegate 中未检测到接触

arrays - Swift - 在具有关联值的枚举数组中查找对象

ios - 在 UIButton 背景图像顶部添加渐变层

swift - UITableViewCell 增加字体大小时更改标签约束

ios - 重新定义 SKNode 意味着我必须将节点重新添加为子节点?

ios - 如何在不产生无数节点的情况下更新分数?

ios - 使用 SpriteKit 场景编辑器设计复杂的对象

ios - Swift:将 Foo<String> 转换为 Foo<Any>

ios - 从 subview 中更改在父 View 上设置的约束