- 本帖最后由 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;
}
