0

我正在尝试使用 CCLabelTTF 在 cocos2d 1.0 中创建多行标签。我已经尝试过我遇到的例子,但似乎没有一个有效。这是我所拥有的

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),那么标签会显示,但不会换行(我认为这是预期的)。但是任何其他值都不会显示任何内容。我究竟做错了什么?

4

2 回答 2

3

根据您的问题,我使用 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);

奇怪的是,在通过 CCLabelTTF ctor 时,它失败了。然而,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"];

在将垂直对齐设置为居中后设置字符串会“不中断”CCLabelTTF ctor。

于 2013-10-01T17:50:49.170 回答
0

您还需要给出标签的高度尺寸。现在你正在传入 200, 0 ,尝试传入一个非零高度

于 2013-10-01T15:47:08.387 回答