coco2d-x2.0.1后CCLabelTTF的一个BUG

  • 本帖最后由 Kevin 于 2012-10-31 00:11 编辑 *

在cocos2d-x2.0.1以后的版本存在这样的一个BUG。我以cocos2d-x2.0.3为例,这样创建一个CCLabelTTF:

CCLabelTTF* pLabel = CCLabelTTF::create("HelloWorldHelloWorldHelloWorldHelloWorldHelloWorld", "Arial", 24, CCSize(100.f, 0.f), kCCTextAlignmentCenter);

在android手机上当这个label自动换行的时候每一行的第一个字符会被切掉,经追查代码,发现在Cocos2dxBitmap.java的文件里有一个这样的函数divideStringWithMaxWidth,估计功能是根据该label的size来拆分成每一行的字符串到一个字符数组里面:

        private static LinkedList<String> divideStringWithMaxWidth(final String pString, final int pMaxWidth, final Paint pPaint) {

该函数的298 - 300行的功能估计是将每一次换行后如果是以空格开始的话就把它去掉,但是那个i++是始终都会执行一次的,那就是说每次都会把一行的第一个字符去掉,所以就造成那个BUG了。经本人亲自测试过,如果把298 - 300行换成以下的代码,就没问题了。

while (pString.indexOf(i) == ) {
++i;
}

还有一点~换行后位置对应不上呀~和IOS版

— Begin quote from ____

AH_Jim 发表于 2013-2-23 16:06 url

@Kevin 老师,我在做安卓的游戏中遇到了和你类似的情况。CCLabelTTF 设置自动换行之后,每行的最后一个汉 …

— End quote

有没有按照我那样改了?

给力,顶起,正找

good,:):slight_smile:

mark-------------

汗。。。:L

学习了!!

这样也行?