2014-07-17 5 views
1

편집 : 방금 전에 균열이 있었을 것입니다. 깨끗하고 또 다른 재건은 그것을 고쳤다.touchesBegan에서 SKNode 트리를 제거하십시오

나는 이것에 대한 두 번째 시각 집합이 내가 무엇을 놓치고 있는지 알려주 길 바란다. "HUD"SKSpriteNodes ... 음소거 버튼, 마지막 점수 표시 등 SpriteKit 게임 장면 (iOS 7.1)이 있습니다. touchesBegan : withEvent에서 감동을 받는지 감지하고 있습니다.

노드를 누르면 해당 메서드가 호출되어 내용을 표시합니다 (이 부분은 정상적으로 작동 함). 그것들은 SKScenes가 아닌 일부 레이블이 위에있는 SKSpriteNode 이미지입니다. 레이블 중 하나는 노드를 닫고 부모로부터 제거하려는 뒤로 버튼입니다. 이것은 예상대로 작동하지 않습니다.

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { 

    UITouch *touch = [touches anyObject]; 
    CGPoint touchLocation = [touch locationInNode:self]; 
    SKNode *touchedNode = [self nodeAtPoint:touchLocation]; 

    // --- Scores 

    if ([touchedNode.name isEqualToString:@"scoresButton"]) { 
     [self showScoresBoard]; 
    } 

    // --- Back 

    if ([touchedNode.name isEqualToString:@"backLabel"]) { 
     SKNode *chalkboard = [self childNodeWithName:@"chalkboard"]; 
     NSLog(@"Touched: %@", touchedNode.name); // backLabel shows in display 
     // chalkboard.alpha = 0.0; // Oddly, this works :/ 
     [chalkboard removeFromParent]; // This does not work ? 
    } 
} 

내 showScoresBoard 꽤 표준 물건입니다 ...

-(void)showScoresBoard { 
    // Root Node 
    SKNode *chalkboard = [SKNode node]; 
    chalkboard.name = @"chalkboard"; 

    // [Background, labels...] 

    // Back Label 
    SKLabelNode *backLabel = [SKLabelNode labelNodeWithFontNamed:@"Chalkduster"]; 

    backLabel.name = @"backLabel"; 
    backLabel.text = @"Back"; 
    backLabel.fontColor = [UIColor whiteColor]; 
    backLabel.fontSize = 22; 
    backLabel.position = CGPointMake(CGRectGetMidX(self.frame), CGRectGetMidY(self.frame) - 165); 
    backLabel.zPosition = 150; 

    [chalkboard addChild:backLabel]; 

    [self addChild:chalkboard]; 
} 

그래서 제 생각 엔 제 질문은, 왜 "[칠판 removeFromParent]"아무것도하지 않는입니까? 나는 거기에서 무엇을 놓치고 있습니까? 알파 속성을 변경하면 SKNode를 올바르게보아야합니다.

의견이 있으십니까?

+0

어떤 종류의 오류가 발생합니까? 아니면이 메서드가 전혀 호출되지 않습니까? – ZeMoon

+0

오류 없음 ... removeFromParent가 출력을 생성하기 전에 NSLog를 입력하면 출력이 생성되므로 생성됩니다. –

답변

0

정확히 왜 현재 작동하는지 정확히 알 수 없습니다. 문제를 다시 검토하기 전에 내가 한 일은 프로젝트의 다른 섹션에서 작업 한 후 정리하고 빌드하는 것입니다. 깨끗이 처리 한 길잃은 작은 조각이었을 것입니다.

0

[self.parent removeFromParent]; 일이 올 수도 있습니다

관련 문제