我有一个带有许多子 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/