我有一个带有多个子SKSpriteNode的SKNode。一个简化的例子:
var parentNode = SKNode() var childNode1 = SKSpriteNode() var childNode2 = SKSpriteNode() self.addChild(parentNode) parentNode.addChild(childNode1) parentNode.addChild(childNode2)
我想colorizeWithColor对所有这些孩子采取行动。当我在上执行操作时parentNode,没有任何效果。
colorizeWithColor
parentNode
我不能enumerateChildNodesWithName在父项上使用,因为它的许多子项已经具有我正在使用的名称。
enumerateChildNodesWithName
有没有一种方法可以遍历的所有子项parentNode,以便对所有子项执行单个操作?
您可以简单地列举parentNode.children:
parentNode.children
for child in parentNode.children as! [SKNode] { // ... }
如有必要,请检查每个孩子是否确实是SKSpriteNode:
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 { // ... }