0

创建这种风格的标签:

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(stable) 错误或我在恐怖电影中?如果是我该怎么办?

\r 的效果与 \n 不知道为什么一样。可能你知道。

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

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

4

1 回答 1

0

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

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

我通过一个简单的 hack 解决了这个问题。

首先,我计算要显示的文本中的换行符数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 上测试

于 2013-09-08T03:05:45.520 回答