2012-12-16 95 views
2

我使用的是CCLabelTTF來顯示玩家在屏幕上的得分。但是,當我撥打setString來更新分數標籤時,它不會更新(因此它始終保持爲0)。CCLabelTTF SetString not updating

這裏是我的代碼:

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,這裏是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]; 
} 
+0

什麼是你的日誌'的NSLog(@「分數:%d」,得分);'? –

+0

您是否使用ARC並且您的標籤屬性較弱? –

+0

將斷點放入addScore和updateScore:方法並檢查它們是否被調用 – Morion

回答

2

好吧,我找到了什麼事,我想我會發布在這裏,如果有誰遇到這樣的:

的問題是,是有原因的,我還是不理,我需要設置一個@property@synthesizeplayerHUD對象,因爲,一些操作後,有人becom零,像@InderKumarRathore說。所以設置一個屬性併爲它合成解決了問題,並且再也不會迷路了!

而且一些研究之後,我認爲這是因爲cocos2D上v.0.98(一個我之前使用)和Cocos2d V1.0(一個我現在用)內存管理之間的一些修改!

無論如何,謝謝大家的支持,非常感謝!

+0

很好,你已經解決了你的問題。請接受你的回答,以便你的問題關閉。 –

4

我設法用下面的代碼來解決這個問題(組字符串爲空字符串,然後將其重置您的字符串)

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