ios - 遍历 SKNode 的所有子节点?

标签 ios swift sprite-kit

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

相关文章:

ios - 自定义 UILocalNotification 的警报

swift - 无法让 CollectionView 中的自定义单元格正常工作

sprite-kit - 如何在 tvOS (AppleTV) 上运行的 View Controller 中设置按钮的初始焦点?

ios - UITextView如何将光标保持在键盘上方

ios - 我可以在后台收听 CMPedometer 并根据不同情况发送本地推送通知吗?

ios - SpriteKit : how to turn touches into vectors of uniform speed?

swift - some View 作为方法/初始化器的输入参数

ios - 为什么选项卡式应用程序中缺少核心数据选项?

swift - 在 for 循环内等待 SKAction 完成

ios - Swift Spritekit 接触位掩码和分数标签