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

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

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

我想对所有这些 child 运行 colorizeWithColor 操作。当我在 parentNode 上运行操作时,没有任何效果。

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

有没有办法遍历 parentNode 的所有子级,以便对所有子级运行单个操作?

最佳答案

您可以简单地枚举 parentNode.children :

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

如有必要,检查每个 child 是否真的是 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 {
    // ...
}

关于ios - 循环遍历 SKNode 的所有子节点?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27880935/

10-12 07:32