다음 코드는 예상대로 작동하지 않습니다. SPRITE KIT PROGRAMMING GUIDE, 61 및 62 페이지에 따르면 구문과 같은 정규 표현식을 사용하여 "고급 검색"을 수행 할 수 있으므로 구현을 오해하지 않는 한 정상적으로 작동합니다.고급 검색 기능이있는 SpriteKit enumerateChildNodesWithName?
SKShapeNode *myCircle = [self getCircle];
myCircle.name = [NSString stringWithFormat:@"CIRCLE_%d_%d", x, y];
myCircle.position = CGPointMake(10,10);
[self addChild:myCircle];
// Lets remove ALL SKNodes that begin with the name "CIRCLE_"
[self enumerateChildNodesWithName:@"CIRCLE_*" usingBlock:^(SKNode *node, BOOL *stop) {
[node removeFromParent];
}];
그러나 노드는 사라지지 않습니다. 정확한 이름을 지정하면 (예 : @"CIRCLE_10_10"
) 작동하지만 와일드 카드 표현 *
은 보이지 않으며 @"CIRCLE_[0-9]+_[0-9]+"
과 같은 것도 아니며 - 심지어 슬래시를 사용하더라도 @"/CIRCLE_[0-9]+_[0-9]+"
입니다.
내가 뭘 잘못하고 있니?
편집 :이 작품과 내가 대신 substring'ing의 일치하지만, 스프라이트 키트 구현 (이상적) 작업을 얻을 수 있었으면 정규 표현식을 구현할 수 .
[[self children] enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
SKNode *node = (SKNode *)obj;
if ([[node.name substringWithRange:NSMakeRange(0, 7)] isEqual: @"CIRCLE_"]) {
[node removeFromParent];
}
}];
나에게 맞는 것 같습니다. @ "/ CIRCLE_ *"또는 @ "// CIRCLE_ *"을 시도하고 그것이 무엇을 얻는 지보십시오. 원 노드가 실제로 열거/childNodeWithName 메시지를 보내는 노드 (자체)의 직접 자식 노드인지 확인하십시오. – LearnCocos2D
그 중 하나가 작동하지 않습니다 너무 전에 (별표 생략) 및 슬래시 (내 펄 정규식 경험에서) 놀고. –
고마워 LearnCocos2D; 예, 그들은 자기의 자식 노드입니다. 실제로, 위의 첫 번째 편집에서 self [self children] : ref'ing while work를 수행하는 블록을 보여줍니다. :) –