cocos2d-x 中lua自动控制label宽度(适用于多国语言版)

来源:互联网 发布:网络推广提成方案 编辑:程序博客网 时间:2024/06/10 09:00
-- 限制label的宽度, 当达到limitWidth时,添加省略号 ...
function SetLabelStringByLimitWidthOfOtherStr(labelObj,limitWidth,otherStr)
    -- body
    local function getStrMap(str)
        -- body
        local  strTab = {}
        for uchar in string.gfind(str, "[%z\1-\127\194-\244][\128-\191]*") do
            strTab[#strTab+1] = uchar
        end
        return strTab
    end
    if labelObj:getContentSize().width <= limitWidth then return end
    local labelStr = labelObj:getString()
    local strMap = getStrMap(labelStr)
    labelObj:setDimensions(0,0)
    local setStr = ""
    local tempStr2 = ""
    local otherStr = otherStr
    for k,v in pairs(strMap) do
        local tempStr = tempStr2..v
        labelObj:setString(tempStr..otherStr)
        if labelObj:getContentSize().width > limitWidth then
            break
        else
            tempStr2 = tempStr
        end    
    end
    setStr = setStr..tempStr2..otherStr
    labelObj:setString(setStr)

end



function getLabelStringByLimitWidth(labelStr,limitWidth)
    -- body
    local function getStrMap(str)
        -- body
        local  strTab = {}
        for uchar in string.gfind(str, "[%z\1-\127\194-\244][\128-\191]*") do
            strTab[#strTab+1] = uchar
        end
        return strTab
    end 
    local labelStr = labelStr
    local strMap = getStrMap(labelStr)
    local setStr = ""
    local tempStr2 = ""
    for k,v in pairs(strMap) do
        local tempStr = tempStr2..v
        labelObj:setString(tempStr)
        if labelObj:getContentSize().width > limitWidth then
            tempStr2 = tempStr2.."\n"
            setStr = setStr..tempStr2
            tempStr2 = ""
        else
            tempStr2 = tempStr
        end    
    end
    setStr = setStr..tempStr2
    return setStr
end

0 0
原创粉丝点击