Jumping to a specific SKNode in node hierarchy

♀尐吖头ヾ 提交于 2019-12-07 03:22:34

问题


I have noticed that the SKNode methods children and childNodeWithName: as the name implies only return results from the children directly below the queried node. i.e. [root children]; will return an NSArray containing the nodes @[CUBE1, CUBE2, CUBE3].

In the diagram below I want to get from the ROOT (SKScene) level down to SPHERE2 so that I can quickly access that nodes children. I was hoping that [root childNodeWithName:@"SPHERE2"]; would traverse the whole hierarchy and return a pointer to SPHERE2

MY QUESTION: Is there something that I have missed that will let me jump into a node tree at a specified point (i.e. using the node name)

I could use properties to store pointers to important positions in the tree and then use these to access and process any child nodes, so that is an option ...


回答1:


You can use the advanced search syntax described in the SKNode documentation, under Advanced Searches.

This will search the entire node tree recursively for a node named "SPHERE2", starting from the root node:

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

If you know the path to a specific node, you can also use that quite easily:

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

It should be noted if you need those nodes often, you should cache them in a __weak ivar or weak property because searching nodes by name takes a little while.



来源:https://stackoverflow.com/questions/19709931/jumping-to-a-specific-sknode-in-node-hierarchy

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!