2014-11-22 80 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 
     } 
    } 
} 

這可能是關於您要查找的內容。