getCharPoint的bug

laya.core.js的getCharPoint这个函数里,有这样一句话:len += lines[i].length;
 
请将其改成:len += lines[i].length + 1;
 
显然开发者没在多行的情况下测试这个函数,换行这种事肯定是末尾有个换行符才会换的嘛!
 
上面的length没考虑换行符,但下面又有句这样的代码:this._text.substring(startIndex, charIndex)
 
其中this._text却是有换行符的字符串,这样返回的结果就不对了
 
我建议的改动很可能不是最佳的,毕竟对牵连的东西了解太少了,目前所知的一个副作用是,每行显示的文字数量会多出一个来
已邀请:

Laya_zhang

赞同来自:

我们确认一下这个问题,如果存在问题,后面会进行修复,感谢反馈

187*****170

赞同来自:

我又来了,因为发现之前那种改动还真是有问题的。len = lines.length + 1;这句里的加1加得太无脑了。
 
最新改成了,取消加1,而是在下面添这几句:
                const lastChar = this._text[len];
                if ('\n' === lastChar || '\r' === lastChar)
                    ++len;

别看就这么点东西,中间折腾好几次,费了我可能有两个钟头,这函数用的思路真是不习惯

this._lines和this._text两套数据,可谓空间上纠缠在了一块,还用var,可谓时间上纠缠在了一块
绝了
 
 

要回复问题请先

商务合作
商务合作