bucle a través de todos los hijos de un SKNode

Tengo un SKNode con varios hijos SKSpriteNodes. Un ejemplo simplificado:

var parentNode = SKNode() var childNode1 = SKSpriteNode() var childNode2 = SKSpriteNode() self.addChild(parentNode) parentNode.addChild(childNode1) parentNode.addChild(childNode2) 

Quiero ejecutar una acción de colorizeWithColor en todos estos niños. Cuando ejecuto la acción en parentNode , no hay efecto.

No puedo usar enumerateChildNodesWithName en el padre, porque muchos de sus hijos ya tienen nombres que estoy usando.

¿Hay una manera de recorrer todos los hijos de parentNode , para ejecutar una sola acción en todos ellos?

Simplemente puede enumerar parentNode.children :

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

Si es necesario, revise cada niño si realmente es un SKSpriteNode :

 for child in parentNode.children { if let spriteNode = child as? SKSpriteNode { // ... } } 

A partir de Swift 2 (Xcode 7), la enumeración y el molde opcional se pueden combinar con un for-loop con un patrón de caso:

 for case let child as SKSpriteNode in parentNode.children { // ... } 

Puede get una matriz de los niños accediendo a los hijos de los padres -atributo, y luego hacer un bucle sobre ellos y ejecutar colorizeWithColor con colorizeWithColor en ellos.

 let children = parentNode.children for child in children { // Do something. }