2012-07-10 56 views
0

高分并没有留在屏幕上,所以最大的问题是我该怎么做,得分会留在屏幕上,直到它被超过,并且会像高分一样更新分数。得分正在被覆盖cocos2d

几天前我接受了另一位用户的建议,这看起来很简单,但是当我试图做到这一点时并未奏效。我尝试了几乎所有不同类型的组合,并没有使用bean。所以看起来我需要某人帮忙指出错误。

初始化

_oldScore = [[NSUserDefaults standardUserDefaults] integerForKey:@"score"]; 
CGSize winSize = [[CCDirector sharedDirector] winSize]; 
    self.scoreLabel = [CCLabelTTF labelWithString:@"" dimensions:CGSizeMake(100, 50) alignment:UITextAlignmentRight fontName:@"Marker Felt" fontSize:32]; 
    _scoreLabel.position = ccp(winSize.width - _scoreLabel.contentSize.width, _scoreLabel.contentSize.height); 
    _scoreLabel.color = ccc3(255,0,0); 
    [self addChild:_scoreLabel z:1];  

实施

if (_score > _oldScore) { 
     [[NSUserDefaults standardUserDefaults] setInteger:_score forKey:@"score"];   
     [_scoreLabel setString:[NSString stringWithFormat:@"score%d", _score]]; 

到目前为止,它的伟大工程,和一切,但oldscore不会停留在屏幕上。我希望玩家知道高分是什么。 用户说用新的nsuserdefaults与一个不同的关键来存储旧分数。这样,得分最高的旧分数将保持在屏幕上。

回答

0

//保存分数优先

int highScore  = yourGameScore; 
[[NSUserDefaults standardUserDefaults] setObject:[NSNumber numberWithInt:highScore] forKey:@"score"]; 
[[NSUserDefaults standardUserDefaults] synchronize]; 

//要优先获得保存的值

highScore = [[[NSUserDefaults standardUserDefaults] objectForKey:@"score"] intValue ]; 

//设置分值为UR cocos2d的标签

[_scoreLabel setString:[NSString stringWithFormat:@"%d", _oldScore]];