cocos2dx-lua中Label文本设置自动换行

2023-01-01 15:23:38 浏览数 (2)

开发环境: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

0 人点赞