我显然正在制作一款有分数的游戏。如何调用更新方法并在右上角实际显示整数?
答案 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 :出于性能原因,如果您经常更新分数,则应切换到CCLabelAtlas
或CCBitmapFontAtlas
。
答案 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 :)