CCLabelTTF SetString не обновляется

Я использую CCLabelTTF чтобы показать счет игрока на экране. Тем не менее, когда я звоню setString чтобы обновить метку счета, он не обновляется (поэтому всегда остается на 0).

Вот мой код:

В Player.m я запускаю новый объект PlayerHUD:

- (id) init{
    if (self = [super init]){
        playerHUD = [[PlayerHUD alloc] loadPlayerInterface];
        [self addChild:playerHUD z:UPLAYER_Z];
    }
    return self;
}

В PlayerHUD.m я запускаю метку счета:

- (id) loadPlayerInterface{
    if (self = [super init]){
        score = 0;
        //Score Label
        lblScore = [CCLabelTTF labelWithString:[NSString stringWithFormat:@"%d", score] fontName:@"pixel" fontSize:24];
        [self addChild:lblScore z:1000];
    }
    return self;
}

Все еще в PlayerHUD.m, вот моя функция обновления:

- (void) updateScore:(NSInteger)_newscore{
    score = _newscore;
    [lblScore setString:[NSString stringWithFormat:@"%d", score]];
}

И в Player.m я вызываю функцию обновления здесь:

- (void) addScore{
    int scoreToAdd = 50

    score += scoreToAdd;

    NSLog(@"Score:%d", score);
    [playerHUD updateScore:score];
}

2 ответа

Решение

Хорошо, я нашел, что было не так, и я подумал, что выложу это здесь, если кто-нибудь когда-нибудь столкнется с этим

Проблема заключалась в том, что по причине, которую я до сих пор игнорирую, мне нужно было установить @property а также @synthesize для меня playerHUD объект, потому что после некоторых операций он становился нулевым, как сказал @InderKumarRathore. Так что установка свойства и синтез для него решают проблему и никогда больше не теряются!

И после некоторых исследований, я думаю, что это связано с некоторыми изменениями между cocos2D v.0.98 (той, которую я использовал раньше) и cocos2D v1.0 (той, которую я использую сейчас) в отношении управления памятью!

В любом случае, спасибо всем за поддержку, высоко ценится!

Мне удалось решить эту проблему, используя код ниже (установите строку в пустую строку, а затем снова установите ее в вашей строке)

[label setString:@""];
[label setString:yourString]; 
Другие вопросы по тегам