CCLabelAtlas setString не обновляет метку - PullRequest
0 голосов
/ 13 марта 2010

У меня есть CCLabelAtlas, который у меня есть на слое для отображения текущего счета в моей игре ... проблема, с которой я сталкиваюсь, заключается в том, что он не обновляется, когда я использую [scoreLabel setString:]. Вот как я это выложил:

В шапке:

@interface GameScene : CCLayer {
...

CCLabelAtlas* scoreLabel;
}

И в init:

scoreLabel = [[CCLabelAtlas alloc] initWithString:@"0" charMapFile:@"scoreCharMap.png" itemWidth:6 itemHeight:8 startCharMap:'.'];
[scoreLabel setPosition:ccp(105, 414)];
[self addChild:scoreLabel z: 6];

scoreCharMap.png - это пользовательская карта, включающая ./0123456789 моего желаемого шрифта. Когда счет меняется, я пытаюсь сделать это, чтобы ярлык обновился с текущим счетом:

NSString* str = [[NSString alloc] initWithFormat:@"%d", [[GameRunner sharedInstance] currentScore]];
[scoreLabel setString: str];
[str release];
[scoreLabel draw];

Проблема в том, что он никогда не обновляется - он просто сидит там и отображает 0. Я точно знаю из-за точек останова и отладки, что вызывается setString, и что строка, которую он должен отображать, является правильной - но это просто не обновляется. Жесткое кодирование значения и высказывание [scoreLabel setString:@"1234"] тоже ничего не делает. Что я здесь не так делаю? Я использую Cocos2d 0,99 - заранее спасибо!

Ответы [ 2 ]

0 голосов
/ 18 марта 2010

Метод - [CCLabelAtlas setString:] делает несколько вещей.

Можете ли вы убедиться в правильности следующего: (установить точку останова и пройти через функцию)

  • resizeCapacity не может изменить размер
  • updateAtlasvalues возвращает указатель на массив символов UTF8. Проверьте это, чтобы убедиться, что это правильная строка, и пока вы там, проверьте n тем же методом, который должен быть длиной вашей строки

См. Код для setString ниже:

- (void) setString:(NSString*) newString {
    if( newString.length > textureAtlas_.totalQuads )
        [textureAtlas_ resizeCapacity: newString.length];

    [string_ release];
    string_ = [newString retain];
    [self updateAtlasValues];

    CGSize s;
    s.width = [string_ length] * itemWidth;
    s.height = itemHeight;
    [self setContentSize:s];
}

Дайте мне знать, каковы результаты, если вам все еще нужна помощь.

0 голосов
/ 15 марта 2010

Может быть, это что-то не так с шрифтом, который вы используете? Попробуйте использовать одну из карт шрифтов, которая поставляется с Cocos2D, и посмотрите, подходит ли она вам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...