所以我创建了一个SKLabelNode: 编辑:更改代码: //。H {SKLabelNode * PausedLabel22;} //.m PausedLabel22 = [SKLabelNode labelNodeWithFontNamed:@“Chalkduster”]; PausedLabel22.text = @“游戏暂停”; PausedLabel22.fontSize = 30; PausedLabel22.fontColor = [SKColor blackColor]; PausedLabel22.position = CGPointMake(160,340); // [self addChild:PausedLabel22]; 这曾经很好,但后来我有我的方法:
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
if (paused == YES) {
paused = NO;
[PausedLabel22 removeFromParent];
NSLog(@"UnPaused");
}else if (touchLocation.x > self.frame.size.width - 80 && touchLocation.y > self.size.height-80 && touchLocation.y < self.size.height-40) {
paused = YES;
NSLog(@"Paused");
//PausedLabel22.text = [NSString stringWithFormat:@"Game Paused"];
//PausedLabel22.fontColor = [SKColor blackColor];
//PausedLabel22.position = CGPointMake(160, 320);
[self addChild:PausedLabel22];
}
NSLog(@"Text Postion: (%f, %f)", PausedLabel22.position.x, PausedLabel22.position.y);
NSLog(@"Text: %@", PausedLabel22.text);
NSLog(@"Text color: %@", PausedLabel22.fontColor);
我的日志告诉我: 2014-03-15 23:12:12.734 NuclearGame [1418:60b] UnPaused 2014-03-15 23:12:12.735 NuclearGame [1418:60b]文字位置:(160.000000,320.000000) 2014-03-15 23:12:12.736 NuclearGame [1418:60b]文字:游戏已暂停 2014-03-15 23:12:12.737 NuclearGame [1418:60b]文字颜色:UIDeviceRGBColorSpace 0 0 0 0 2014-03-15 23:12:13.248 NuclearGame [1418:60b]暂停 2014-03-15 23:12:13.251 NuclearGame [1418:60b]文字位置:(160.000000,320.000000) 2014-03-15 23:12:13.252 NuclearGame [1418:60b]文字:游戏暂停 2014-03-15 23:12:13.254 NuclearGame [1418:60b]文字颜色:UIDeviceRGBColorSpace 0 0 0 1
然而,在屏幕上会出现标签(因为它在开始时被调用)然后消失就好了,但从未重新出现在屏幕上!
编辑:标签仍然没有出现......
答案 0 :(得分:0)
我相信您没有看到它,因为您正在其自己的坐标系中将暂停标签的位置设置为touchesBegan:
方法中的(160,320),因此它将其拉出屏幕。在已经在其父节点的坐标系中设置之后,您无需设置其位置。
将暂停标签节点命名为“pauseLabel”。此名称将用于检测touchesBegan
:方法中是否触摸了节点。
//.h
{SKLabelNode *PausedLabel22;}
//.m
PausedLabel22= [SKLabelNode labelNodeWithFontNamed:@"Chalkduster"];
PausedLabel22.name = @"pauseLabel";
PausedLabel22.text = @"Game Paused";
PausedLabel22.fontSize = 30;
PausedLabel22.fontColor = [SKColor blackColor];
PausedLabel22.position = CGPointMake(160, 340);
[self addChild:PausedLabel22];
接触开始了:
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
for (UITouch *touch in touches) {
SKNode *node = [self nodeAtPoint:[touch locationInNode:self]];
if (node != self && [node.name isEqualToString:@"pauseLabel"]) {
if (paused == YES) {
paused = NO;
[PausedLabel22 removeFromParent];
} else {
paused = YES;
[self addChild:PauseLabel22];
}
return;
}
}
}
如果有效,请告诉我们。
这也是用于在spriteKit中创建按钮的一个很好的类:https://stackoverflow.com/a/19199748/2526115