Ios 删除ToucheStarted中的SKNode树
编辑:我刚才一定是疯了。清洁和另一次重建似乎已经修复了它 我希望第二次看到这件事能告诉我我错过了什么。我有SpriteKit游戏场景(iOS 7.1)和几个“HUD”SKSpriteNodes。。。静音按钮、显示最后分数等。我检测它们是否在触摸中被触摸开始:withEvent 当触摸节点时,会调用相应的方法来显示其内容(此部分工作正常)。它们不是SKScenes,只是一个SKSpriteNode图像,上面有一些标签。其中一个标签是一个后退按钮,我想关闭节点/将其从父节点移除。这不是我所期望的那样有效Ios 删除ToucheStarted中的SKNode树,ios,objective-c,sprite-kit,Ios,Objective C,Sprite Kit,编辑:我刚才一定是疯了。清洁和另一次重建似乎已经修复了它 我希望第二次看到这件事能告诉我我错过了什么。我有SpriteKit游戏场景(iOS 7.1)和几个“HUD”SKSpriteNodes。。。静音按钮、显示最后分数等。我检测它们是否在触摸中被触摸开始: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 ?
}
}
我的展示记分板是相当标准的东西
-(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];
}
所以我想我的问题是,为什么“[从家长那里移除黑板]”什么都不做?我错过了什么?在更改SKNode的alpha属性时,它必须正确地看到SKNode
有什么想法吗?我真的不知道为什么它现在起作用了。在重新讨论这个问题之前,我做的唯一一件事就是在完成项目的另一个部分后进行一次清理和构建。一定是清洁人员处理的一些零散碎片。[self.parent removeFromParent];可能是工作是否发生任何类型的错误,或者根本没有调用此方法?没有错误。。。如果我在removeFromParent生成输出之前放入一个NSLog,那么我知道它正在生成输出。