关闭

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

833人阅读 评论(0) 收藏 举报
分类:
-- 限制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

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:7883次
    • 积分:183
    • 等级:
    • 排名:千里之外
    • 原创:11篇
    • 转载:0篇
    • 译文:0篇
    • 评论:1条
    文章分类