为什么CCLabel BMFont无法使用“\ n”开始新行

时间:2013-08-05 13:57:44

标签: ios objective-c cocos2d-iphone

喜欢这个:

    CCLabelBMFont *label=[CCLabelBMFont labelWithString:[objectDictionary objectForKey:@"Text"] fntFile:@"BasicFont.fnt"];
    [label setScale:[[objectDictionary objectForKey:@"Scale"]floatValue]];
    [label setPosition:ccp(objectPosition.x,objectPosition.y)];
    [self addChild:label];

我尝试从plist文件加载文本。 plist文件中的文本是“Hello \ n World”

它显示相同的内容(“Hello \ n World”)。

但是,如果我用“Hello \ n World”替换 [objectDictionary objectForKey:@“Text”] ,它会以两行显示。

我还将“\ n”更改为“/ \ n”或“\ n”,但它仍无效。

3 个答案:

答案 0 :(得分:1)

尝试将[objectDictionary objectForKey:@"Text"]替换为:

[NSString stringWithString:[objectDictionary objectForKey:@"Text"]]

答案 1 :(得分:1)

在cocos2d v2.0中,你可以用\ n打破这一行。在我的项目中,我只是喜欢使用

CCLabelBMFont *lblBonus = [CCLabelBMFont labelWithString:[NSString stringWithFormat:@"BONUS \n %d",bonusScore] fntFile:@"myCustom.fnt"];
lblBonus.position = ccp(.....);
[self addChild:lblBonus];

要进行内容对齐,cocos2d论坛中的帖子很少。目前我不记得直接链接到帖子。但是你肯定会通过搜索多行来获得它。我知道有人(可能是Mark)做得很好,但那是旧版本的cocos2d。

答案 2 :(得分:0)

也许这会有所帮助 字典不理解并将其读作文字“n”,而不是字符“n”。

我确信有更好的方法让文本中断工作 但你可以试试这个......

NSString *Text = [dictionary objectForKey:key];
NSArray  *strings = [Text componentsSeparatedByString:@"_"];
if ([strings count] >= 2)
Text = [NSString stringWithFormat:@"%@n%@",[strings objectAtIndex:0],[strings       objectAtIndex:1]];

你可以通过在文本中添加一个下划线来获取换行符(这是使用componentsSeparatedByString分解行的方式:@“_”)

例如,字典中的文字应该是这样的

其他行上的Word_Words,现在是另一行。

我没有对它进行过测试,但希望它能帮助您走上正确的轨道:)