问题出现的条件:
设定宽度,且setLineBreakWithoutSpace(true)
问题描述:
处理自动分行逻辑时,会对字符做变换添加换行符\n,并再次调用createFontChars,此时字符序号存在错位可能。
注:自动添加的换行位前的字符tag正常,后续字符错。
解决方案:
tag编号需要过滤掉换行,这么处理后,不管是否存在字符变换,tag都是一致的。
修改后代码:(供参考 请比对源代码)
设定宽度,且setLineBreakWithoutSpace(true)
问题描述:
处理自动分行逻辑时,会对字符做变换添加换行符\n,并再次调用createFontChars,此时字符序号存在错位可能。
注:自动添加的换行位前的字符tag正常,后续字符错。
解决方案:
tag编号需要过滤掉换行,这么处理后,不管是否存在字符变换,tag都是一致的。
修改后代码:(供参考 请比对源代码)
修改点:
void CCLabelBMFont::createFontChars()
{
int nextFontPositionX = 0;
int nextFontPositionY = 0;
unsigned short prev = -1;
int kerningAmount = 0;
CCSize tmpSize = CCSizeZero;
int longestLine = 0;
unsigned int totalHeight = 0;
unsigned int quantityOfLines = 1;
unsigned int stringLen = m_sString ? cc_wcslen(m_sString) : 0;
if (stringLen == 0)
{
return;
}
set<unsigned int> *charSet = m_pConfiguration->getCharacte