2013-10-31 51 views
6

我注意到,SKNode方法childrenchildNodeWithName:作爲名稱意味着僅返回查詢節點正下方的子節點的結果。即[root children];將返回包含節點@[CUBE1, CUBE2, CUBE3]NSArray跳轉到節點層次結構中的特定SKNode

在下面的圖表中,我想從ROOT(SKScene)級別向下到SPHERE2,以便我可以快速訪問該節點的子節點。我希望[root childNodeWithName:@"SPHERE2"];會遍歷整個層次結構,並返回一個指向SPHERE2

enter image description here

我的問題:有什麼,我已經錯過了,讓我跳進一個節點樹在指定點(即使用節點名稱)

我可以使用屬性來存儲指針到重要崗位的樹,然後利用這些訪問和處理任何子節點,所以這是一個選項...

回答

12

你可以使用 高級搜索下的SKNode documentation中描述的高級搜索語法。

這將遞歸名爲「SPHERE2」節點搜索整個節點樹,從根節點開始:

SKNode* sphere2 = [root childNodeWithName:@"//SPHERE2"]; 

如果您知道路徑到一個特定節點,你也可以使用很容易:

SKNode* triangle3 = [root childNodeWithName:@"/CUBE3/SPHERE2/TRIANGLE3"]; 

,如果你需要這些節點的時候,你應該緩存它們在__weak伊娃或0​​屬性,因爲按名稱搜索節點需要一點時間應當注意的。

+0

完美的,我不知道我錯過了那些我應該讀過的東西。非常感謝Steffen,感謝您的高舉。 – fuzzygoat

+0

好的,但如何找到節點「我」的所有名爲「MyChildren」的孩子,而我們不知道「我」放在樹的哪個位置? –

+0

您將使用「// Me/MyChildren」在整個樹中搜索名爲「MyChildren」的父節點名爲「Me」的節點。 –

相關問題