2013-10-31 2 views
6

SKNode 메서드 childrenchildNodeWithName:은 쿼리 된 노드 바로 아래에있는 자식의 결과 만 반환한다는 것을 의미합니다. 즉 [root children];은 노드 @[CUBE1, CUBE2, CUBE3]을 포함하는 NSArray을 반환합니다.노드 계층 구조의 특정 SKNode로 점프

아래 그림에서 나는 ROOT (SKScene) 레벨에서 SPHERE2로 내려 가서 노드 노드에 빠르게 액세스 할 수 있습니다. 나는 [root childNodeWithName:@"SPHERE2"]; 전체 계층 구조를 탐색하고 SPHERE2

에 대한 포인터를 반환 할 것이라고 기대했다

enter image description here

내 질문 : 날 지정된 점에서 노드 트리로 이동하게됩니다 내가 놓친 뭔가가 있나요 (예를 사용하여 노드 이름)

나는 그 옵션 그래서 트리에서 중요한 위치에 대한 포인터를 저장하고 접근이를 사용하여 자식 노드를 처리하는 속성을 사용할 수

...

답변

12

당신이 할 수있는 사용 Advanced Search에서 SKNode documentation에 설명 된 고급 검색 구문

이 루트 노드에서 시작하여 반복적으로 "SPHERE2"라는 이름의 노드 전체 노드 트리를 검색합니다 : 특정 노드에 대한 경로를 알고있는 경우

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

, 당신은 또한 아주 쉽게 그것을 사용할 수 있습니다 :

SKNode* triangle3 = [root childNodeWithName:@"/CUBE3/SPHERE2/TRIANGLE3"]; 
당신이 이름으로 노드를 검색하는 것은 조금 걸리기 때문에 이러한 노드는 종종, 당신이 __weak 바르거나 weak 속성을 캐시해야해야하는 경우 그것은 주목해야한다

.

+0

완벽하게, 내가 어떻게 그걸 읽었는지 나는 놓쳤다. Steffen, 헤드 감사합니다. – fuzzygoat

+0

좋습니다.하지만 "Me"가 트리에있는 위치를 모르는 동안 노드 "Me"의 "MyChildren"이라는 이름의 모든 자식을 찾는 방법은 무엇입니까? –

+0

"// Me/MyChildren"을 사용하여 전체 트리에서 "My"라는 부모가있는 "MyChildren"이라는 노드를 검색합니다. –

관련 문제