一尘不染

遍历SKNode的所有子级?

swift

我有一个带有多个子SKSpriteNode的SKNode。一个简化的例子:

var parentNode = SKNode()
var childNode1 = SKSpriteNode()
var childNode2 = SKSpriteNode()

self.addChild(parentNode)
parentNode.addChild(childNode1)
parentNode.addChild(childNode2)

我想colorizeWithColor对所有这些孩子采取行动。当我在上执行操作时parentNode,没有任何效果。

我不能enumerateChildNodesWithName在父项上使用,因为它的许多子项已经具有我正在使用的名称。

有没有一种方法可以遍历的所有子项parentNode,以便对所有子项执行单个操作?


阅读 250

收藏
2020-07-07

共1个答案

一尘不染

您可以简单地列举parentNode.children

for child in parentNode.children as! [SKNode] {
    // ...
}

如有必要,请检查每个孩子是否确实是SKSpriteNode

for child in parentNode.children {
    if let spriteNode = child as? SKSpriteNode {
        // ...
    }
}

Swift 2(Xcode 7)开始, 可以将枚举和可选强制转换与具有case-pattern的for循环结合使用:

for case let child as SKSpriteNode in parentNode.children {
    // ...
}
2020-07-07