如何在Cocos2d中更新和显示分数整数?

时间:2011-04-10 11:01:20

标签: iphone xcode cocos2d-iphone

我显然正在制作一款有分数的游戏。如何调用更新方法并在右上角实际显示整数?

3 个答案:

答案 0 :(得分:8)

在这里,这可能有用

在.h文件中:

@interface HelloWorld : CCLayer {
    int score;    
    CCLabelTTF *scoreLabel;
}

- (void)addPoint;

在.m文件中:

  

在init方法中:

//Set the score to zero.
score = 0;

//Create and add the score label as a child.
scoreLabel = [CCLabelTTF labelWithString:@"8" fontName:@"Marker Felt" fontSize:24];
scoreLabel.position = ccp(240, 160); //Middle of the screen...
[self addChild:scoreLabel z:1];

其他地方:

- (void)addPoint
{
    score = score + 1; //I think: score++; will also work.
    [scoreLabel setString:[NSString stringWithFormat:@"%@", score]];
}

现在只需致电:[self addPoint];每当用户杀死敌人时。

那应该有用,告诉我它是否没有,因为我没有测试过。

答案 1 :(得分:3)

头文件中的

@interface GameLayer : CCLayer
{
    CCLabelTTF *_scoreLabel;
}

-(void) updateScore:(int) newScore;

在实施文件中:

-(id) init
{
    if( (self=[super init])) {
      // ..

      // add score label
      _scoreLabel = [CCLabelTTF labelWithString:@"0" dimensions:CGSizeMake(200,30) alignment:UITextAlignmentRight fontName:@"Marker Felt" fontSize:30]; 
      [self addChild:_scoreLabel];
      _scoreLabel.position = ccp( screenSize.width-100, screenSize.height-20);

    }
    return self;
}

-(void) updateScore:(int) newScore {
    [_scoreLabel setString: [NSString stringWithFormat:@"%d", newScore]];
}

编辑:如果您不想使用ivar,可以使用标签:

[self addChild:scoreLabel z:0 tag:kScoreLabel];
// ...
CCLabelTTF *scoreLabel = (CCLabelTTF*)[self getChildByTag:kScoreLabel];

编辑2 :出于性能原因,如果您经常更新分数,则应切换到CCLabelAtlasCCBitmapFontAtlas

另请阅读cocos2d programming guide about labels

答案 2 :(得分:0)

使用UILabel

UILabel.text = [NSString stringWithFormat:@"%lu",score];

使用界面构建器将UILabel移动到视图顶部 你也可以通过编程方式创建它

UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0,0,500,30)];
[[self view] addSubview:label];
[label release]; // dont leak :)