【问题标题】:Jumping to a specific SKNode in node hierarchy跳转到节点层次结构中的特定 SKNode
【发布时间】:2013-10-31 15:00:58
【问题描述】:

我注意到,SKNode 方法childrenchildNodeWithName: 顾名思义只返回来自查询节点正下方的子节点的结果。即[root children]; 将返回一个包含节点@[CUBE1, CUBE2, CUBE3]NSArray

在下图中,我想从 ROOT (SKScene) 级别下降到 SPHERE2,以便我可以快速访问该节点的子节点。我希望[root childNodeWithName:@"SPHERE2"]; 会遍历整个层次结构并返回指向 SPHERE2 的指针

我的问题:有什么我错过的东西可以让我在指定点跳转到节点树(即使用节点名称)

我可以使用属性来存储指向树中重要位置的指针,然后使用它们来访问和处理任何子节点,所以这是一个选项...

【问题讨论】:

    标签: ios objective-c sprite-kit sknode


    【解决方案1】:

    您可以使用高级搜索下SKNode documentation 中描述的高级搜索语法。

    这将从根节点开始递归搜索整个节点树以查找名为“SPHERE2”的节点:

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

    如果你知道特定节点的路径,你也可以很容易地使用它:

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

    需要注意的是,如果您经常需要这些节点,您应该将它们缓存在 __weak ivar 或 weak 属性中,因为按名称搜索节点需要一些时间。

    【讨论】:

    • 完美,我不知道我怎么错过了我应该读过的所有内容。非常感谢 Steffen,感谢您的提醒。
    • 好的,但是当我们不知道“Me”在树中的什么位置时,如何找到节点“Me”的所有名为“MyChildren”的孩子?
    • 您将使用“//Me/MyChildren”在整个树中搜索名为“MyChildren”且父节点名为“Me”的节点。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-19
    • 2010-09-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多