我希望第二眼看到这个会告诉我我失踪了什么。我有一些SpriteKit游戏场景(iOS 7.1)和几个" HUD" SKSpriteNodes ...静音按钮,显示最后得分等。我在检测他们是否触摸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];
}
所以我想我的问题是,为什么不是" [黑板删除从父母那里]"做任何事情?我在那里错过了什么?它必须正确地看到SKNode,因为它改变了它的alpha属性。
有什么想法吗?
答案 0 :(得分:0)
严重不确定为什么它现在正在运作。在重新审视该问题之前,我所做的只是在完成项目的另一部分后进行清理和构建。一定是干净的一些流浪点。
答案 1 :(得分:0)
[self.parent removeFromParent];可能是工作