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