CCLabelTTF SetString未更新

时间:2012-12-16 07:26:38

标签: objective-c ios cocoa-touch cocos2d-iphone cclabelttf

我正在使用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 个答案:

答案 0 :(得分:4)

我设法使用下面的代码解决了这个问题(将字符串设置为空字符串,然后将其重新设置为字符串)

[label setString:@""];
[label setString:yourString]; 

答案 1 :(得分:2)

好的,我发现错了,我想我会在这里张贴,如果有人遇到过这个:

问题在于,由于我仍然忽略的原因,我需要为@property对象设置@synthesizeplayerHUD,因为在某些操作之后,它变为零,就像@InderKumarRathore所说的那样。所以设置一个属性并合成它解决了问题,永远不会再迷路了!

经过一些研究,我认为这是因为cocos2D v.0.98 (我之前使用的那个)和cocos2D v1.0 之间的一些修改(我是关于内存管理,请立即使用!

无论如何,谢谢大家的支持,非常感谢!