移除touchesBegan中的SKNode Tree



编辑:我刚才一定是嗑药了。清理和另一次重建似乎已经修复了它。

我希望另一双眼睛能告诉我我错过了什么。我有SpriteKit游戏场景(iOS 7.1)与几个"HUD"SKSpriteNodes…静音按钮,显示最后的分数等。我在touchesBegan:withEvent中检测它们是否被触摸。

当节点被触摸时,一个相应的方法被调用来显示它的内容(这部分工作正常)。他们不是SKScenes只是SKSpriteNode图像与一些标签在顶部。其中一个标签是Back Button,我想关闭节点/从父节点中删除它。这并没有像我期望的那样工作

-(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改变它的alpha属性工作。

任何想法吗?

真的不知道为什么它现在工作。在重新审视这个问题之前,我所做的唯一一件事就是在完成项目的另一部分后进行清理和构建。一定是一些杂物被清理掉了

[self。父母removeFromParent];可能是work

最新更新