Как обновить Score Integer и отобразить его в Cocos2d? - PullRequest
8 голосов
/ 10 апреля 2011

Я, очевидно, создаю игру, которая имеет счет. Как вызвать метод обновления и отобразить целое число в верхнем правом углу?

Ответы [ 3 ]

8 голосов
/ 26 апреля 2011

Здесь это может работать

В файле .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]; всякий раз, когда пользователь убивает врага.

Это должно сработать, скажите мне, если это не сработало, потому что я не проверял это.

3 голосов
/ 10 апреля 2011

в заголовочном файле:

@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]];
}

РЕДАКТИРОВАТЬ : если вы не хотите использовать ивар, вы можетеиспользуйте теги:

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

РЕДАКТИРОВАТЬ 2 : по соображениям производительности вам следует переключиться на CCLabelAtlas или CCBitmapFontAtlas, если вы обновляете счет очень часто.

ТакжеПрочитайте Руководство по программированию cocos2d о ярлыках .

0 голосов
/ 10 апреля 2011

Использование 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 :)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...