我有一个带有许多子 SKSpriteNode 的 SKNode。一个简化的例子:
var parentNode = SKNode()
var childNode1 = SKSpriteNode()
var childNode2 = SKSpriteNode()
self.addChild(parentNode)
parentNode.addChild(childNode1)
parentNode.addChild(childNode2)
我想对所有这些 child 运行一个 colorizeWithColor
Action 。当我在 parentNode
上运行操作时,没有任何效果。
我不能在父级上使用 enumerateChildNodesWithName
,因为它的许多子级已经有了我正在使用的名称。
有没有办法遍历 parentNode
的所有子节点,以便对所有子节点执行一个操作?
最佳答案
你可以简单地枚举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 模式的 for 循环中:
for case let child as SKSpriteNode in parentNode.children {
// ...
}
关于ios - 遍历 SKNode 的所有子节点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27880935/