开发环境:cocos2dx 3.17 开发语言:lua 我们在开发过程中,经常会遇到字符串过长,显示的时候超出范围,这时我们可以设置Label自动换行
代码语言:javascript复制function FunSetLinefeed( strText, nLineWidth ) --文本,行宽
--读取每个字符做中文英文判断,并且记录大小
local nStep = 1
local index = 1
local ltabTextSize = {}
while true do
c = string.sub(strText, nStep, nStep)
b = string.byte(c)
if b > 128 then
ltabTextSize[index] = 3
nStep = nStep 3
index = index 1
else
ltabTextSize[index] = 1
nStep = nStep 1
index = index 1
end
if nStep > #strText then
break
end
end
--将字符按照限定行宽进行分组
local nLineCount = 1
local nBeginPos = 1
local lptrCurText = nil
local ltabText = {}
local nCurSize = 0
for i = 1, index - 1 do
nCurSize = nCurSize ltabTextSize[i]
if nCurSize > nLineWidth and nLineCount< math.ceil(#strText/nLineWidth) then
nCurSize = nCurSize - ltabTextSize[i]
ltabText[nLineCount] = string.sub( strText, nBeginPos, nBeginPos nCurSize - 1 )
nBeginPos = nBeginPos nCurSize
nCurSize = ltabTextSize[i]
nLineCount = nLineCount 1
end
if nLineCount == math.ceil(#strText/nLineWidth) then
ltabText[nLineCount] = string.sub( strText, nBeginPos, #strText)
end
end
-- for i = 1, nLineCount - 1 do
for i = 1, nLineCount do
if lptrCurText == nil then
lptrCurText = ltabText[i]
else
lptrCurText = lptrCurText .. "n" .. ltabText[i]
end
end
return lptrCurText
end