CCLabelTTF многострочная метка не работает

Я пытаюсь создать многострочный ярлык в cocos2d 1.0 с помощью CCLabelTTF. Я пробовал примеры, с которыми мне приходилось сталкиваться, но ни один из них, похоже, не работает. Вот что у меня есть

CCLabelTTF *storeLabelHeading = [CCLabelTTF labelWithString:@"Here is a really long string that I want to wrap"
                                                     dimensions: CGSizeMake(200,0)
                                                      alignment: NSTextAlignmentCenter
                                                  lineBreakMode: NSLineBreakByWordWrapping
                                                       fontName:@"Marker Felt" fontSize: 24];

storeLabelHeading.color = ccc3(0,0,0);
[storeLabelHeading setAnchorPoint:ccp(0,0)];

storeLabelHeading.position = ccp(screenSize.width * 0.35f,
                                       screenSize.height * 0.85);
[self addChild:storeLabelHeading z:kStoreLayer+10];

Я пробовал разные размеры. Если я использую CGSizeMake(0,0), метка будет отображаться, но без переноса (что, я думаю, ожидается). Но любое другое значение ничего не отображает. Что я делаю неправильно?

2 ответа

Решение

По вашему вопросу, я получаю такие же результаты с cocos2d 2.0, без переноса слов. Тем не менее, я получил это для правильной работы:

    CCTexture2D *tex =[ [[CCTexture2D alloc] 
            initWithString:@"Here is a really long string that I want to wrap wrap wrap"
                dimensions:CGSizeMake(120, 120)
                hAlignment:kCCTextAlignmentCenter  
                vAlignment:kCCVerticalTextAlignmentCenter
             lineBreakMode:kCCLineBreakModeWordWrap
                  fontName:@"Marker Felt"
                  fontSize:24 ] autorelease];

    CCSprite *spr = [CCSprite spriteWithTexture:tex];
    [self addChild:spr];
    spr.position=ccp(kScreenWidth/2,kScreenHeight/2);

как ни странно, при прохождении через ctor CCLabelTTF происходит сбой. Тем не менее, CCLabelTTF использует это для создания метки. Вероятно, это связано с неправильной обработкой вертикального выравнивания где-то в конвейере.

PS: это также работает

    CCLabelTTF *storeLabelHeading = [CCLabelTTF labelWithString:@"Here is a really long string that I want to wrap"
                                                         dimensions: CGSizeMake(120,120)
                                                          hAlignment: kCCTextAlignmentLeft
                                                      lineBreakMode: kCCLineBreakModeWordWrap
                                                           fontName:@"Marker Felt" fontSize: 24];
    storeLabelHeading.verticalAlignment=kCCVerticalTextAlignmentCenter;

    storeLabelHeading.color = ccc3(0,0,0);
    [storeLabelHeading setAnchorPoint:ccp(0,0)];

    storeLabelHeading.position = ccp(kScreenWidth * 0.35f,
                                           kScreenHeight * 0.85);
    [self addChild:storeLabelHeading z:1+10];

    [storeLabelHeading setString:@"Here is a really long string that I want to wrap wrap wrap"];

Установка строки после установки вертикального выравнивания по центру "разбивает" ctor CCLabelTTF.

Вы должны также указать высоту размера метки. Прямо сейчас вы проходите в 200, 0, попробуйте пройти в ненулевой высоте

Другие вопросы по тегам