CCLabelBMFont丢失每个换行符的拖尾字符

时间:2013-07-16 21:26:33

标签: character-encoding cocos2d-iphone width newline cclabelttf

创建这种风格的标签:

CCLabelBMFont *label1_=
[CCLabelBMFont labelWithString:@"description: -" fntFile:@"comicsans.fnt" width:270 alignment:kCCTextAlignmentLeft];

[label1_ setString:
@"someText\n and some newline \nand another new line too but this is last"];

这个字符串有2个转义字符用于新行。当我设置这个时,我失去了最后2个单词 它显示了类似的东西

someText
and some newline
and another new line too but this is la

所以最后两封信以某种方式丢失了。 这个问题可能是什么原因? cocos2d v2.1(稳定版)的bug还是我在恐怖电影中?如果是这样我该怎么办?

\ r和\ n的效果相同 不知道为什么。你可能知道吗。

如果我不使用\ r \ n转义字符; CCLabelFont字符串显示正确的字符串。不会丢失任何数量的字符拖尾。

所以我的临时解决方案是从字符串修复问题中删除转义字符。 但这不能修复cocos2d v2.1(稳定版)的bug。 我认为如果有\ n转义字符,CCLabel类的类不能计算不稳定。

1 个答案:

答案 0 :(得分:0)

自从我使用CCLabelBMFont动画文字输入以来,我遇到了同样的问题。

我意识到只要输入的文字有换行符\n,CCLabelBMFont就不会输入尾随字符。

我通过简单的黑客解决了这个问题。

首先,我计算要由CCLabelBMFont显示的文本中的换行符数。

NSRegularExpression *regx = [NSRegularExpression regularExpressionWithPattern:@"\n" 
                                                                      options:0 
                                                                        error:nil];

NSUInteger newlinesCount = [regx numberOfMatchesInString:typeString
                                                 options:0
                                                   range:NSMakeRange(0, typeString.length)];

然后我只在字符串的末尾添加一些空格,我将要输入。要添加的空格数等于换行符数。

for (int i = 0; i < newlinesCount; i++) {
  typeString = [typeString stringByAppendingString:@" "];
}

// This sets the string for the BMFont, it should now display all the characters
// that you wanted to type originally.
[self.labelBMFont setString:typeString];

在cocos2d 2.1上测试