2014-11-22 63 views
1

当调用覆盖函数“didMoveToView”时,是否可以遍历场景中包含的所有对象?在上下文中,我试图检查所有对象,看看它们中的一个是否具有名称“planet1”,然后围绕给定点进行轨道运动。循环浏览场景中的所有对象/精灵

+0

通过兄弟姐妹视图循环? – nhgrif 2014-11-22 18:26:44

回答

6

,如果你通过所有的节点都需要循环只使用

enumerateChildNodesWithName("//*", usingBlock: 
    { (node, stop) -> Void in 
     if node.name=="planet1" { 
      //make it orbit 
     } 
    }) 

在名称字符串//手段搜索整个节点树,不只是这个节点的孩子。
*是通配符,任何名称,你可以使用"xxx*"匹配任何名称以xxx和同为"*xxx",以匹配任何名称XXX

编辑结束:你可以这样做:

planet1=self.childNodeWithName("//planet1")! 
+0

谢谢,这对我有用。 – ColonelHedgehog 2014-11-22 18:59:16

1

只是遍历所有父视图的子视图。

override func didMoveToView(view: SKView) { 
    super.didMoveToView(view) 
    for sibling in view.subviews { 
     // check sibling view 
    } 
} 

请注意,循环中至少有一个对象将等于self。另请注意,它们全都有一种AnyObject。所以你必须沮丧。如果您的视图名为“planet1”,但它是特定的类:

for sibling in view.subviews { 
    if let planet = sibling as? PlanetSprite { 
     if planet.name == "planet1" { 
      // do stuff 
     } 
    } 
} 

这可能是关于您要查找的内容。

相关问题