应用程序在第二点,目标C后冻结

时间:2016-03-10 20:16:13

标签: ios objective-c sprite-kit nsstring sklabelnode

我想制作像'乒乓球'这样的小游戏。一切都很好,但是现在,当我想添加一个分数时,游戏会冻结。我将这段代码用于我的另一个项目,一切都很好。

以下是score部分的代码:

-(void)scoreCount{
    score ++;
    if(scoreLabel == nil){

        scoreLabel = [SKLabelNode labelNodeWithFontNamed:@"ROTORcapExtendedBold"];
        scoreLabel.fontSize = 40;
        scoreLabel.position = CGPointMake(self.frame.size.width/2,self.frame.size.height/3);
        scoreLabel.zPosition = 0;
    }
    [self addChild:scoreLabel];
    scoreLabel.text = [NSString stringWithFormat:@"%ld",(long)score];
}
在控制台中我收到了这条消息:

  

由于未捕获的异常'NSInvalidArgumentException'而终止应用程序,原因:'尝试添加已有父级的SKNode:name:'(null)'text:'1'fontName:'ROTORcapExtendedBold'位置:{189.33333,106.66666 }“

删除行scoreLabel == nil后,应用程序不会冻结,但屏幕上的分数会复制旧分数并使分数无法读取。

我该如何解决?

1 个答案:

答案 0 :(得分:5)

[self addChild:scoreLabel]放在if语句中。

目前,您每次更新标签时都会尝试将其添加到场景中,并且一旦它已经在场景中就无法再次添加。