SKLabelNode消失后不显示

时间:2014-03-15 22:17:22

标签: ios iphone sprite-kit sklabelnode

所以我创建了一个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

然而,在屏幕上会出现标签(因为它在开始时被调用)然后消失就好了,但从未重新出现在屏幕上!

编辑:标签仍然没有出现......

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