다른 문제에 대한 인터넷 검색을 수행 한 직후에 착륙했습니다.
부모 (HUDLayer)에서 개체를 제거하려고합니다. 누군가가 "자기"라는 문제에 대해 답변했습니다. 내가 루프를받지 않고는 자식 노드를 제거하려고 다른 사람 도움이 될 수 있습니다 생각하지만 ...
당신이 말한 ...
for(id *item in HUDLayer.children_) {
[self removeChild:item cleanup:YES];
}
는 ...하지만 그래도 나는 아래의 코드를 추가 할 것 돌연 변이.
for(id item in HUDLayer.children) {
// If it's a sprite that you want to remove
if ([item isKindOfClass:[CCSprite class]]) {
// Use this to remove or else you'll have a loop mutation.
[item removeFromParentAndCleanup:YES];
}
}
어쨌든, 누군가를 돕기를 바랍니다.
지금 편집하십시오. EVEN을 반복하고 제거 할 때 부모가 배열 변이를 일으킬 수 있습니다. 따라서 위의 코드를 먼저 배열에있는 모든 자식 요소를 수정하고 나서 IN REVERSE를 반복하고 그 기준에 따라 객체를 제거합니다. 이 방법은 배열 변이를 피할 수 있습니다. 아래를 참조하십시오 :
NSArray *items = [[NSArray alloc] initWithArray: HUDLayer.children];
for (long i = items.count - 1; i >= 0; i--) {
id item = items[i];
if ([item isKindOfClass:[CCSprite class]] ||
[item removeFromParentAndCleanup:YES];
}
}
items = nil;
다시 도움이되기를 바랍니다.
나는 그것이 그렇게 단순해야만한다는 것을 알고있다. 그러나 이제는 'HUDLayer'객체에 자식이 없습니다. – Joey
@Joey 내 잘못이 아니며 'HUDLayer'문서를 참조하십시오. –
children_은 CCNode의 속성이며 HUDLayer에서 선언되지 않습니다. CCNode에서이 속성을 인식하지 못하는 이유가 있습니까? – Joey