精灵套件和类型推断

时间:2014-10-28 16:12:37

标签: swift sprite-kit

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

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

这是我的代码:

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

当不在rawBubble上使用类型推断时,我收到此错误:SKPhysicsBody? does not have a member named dynamic

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

感谢。

1 个答案:

答案 0 :(得分:1)

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

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