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

原创 2016年06月01日 17:52:44
-- 限制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

相关文章推荐

cocos2d-x 3.x label 功能详解,包括行列间距等细节问题

尊重知识版权,文章转载于:http://www.taikr.com/group/2/thread/1869 这次主要介绍一下关于cocos2d-x 3.x label自动换行的问题,详细的总结一下C...
  • suntwei
  • suntwei
  • 2015年09月17日 10:06
  • 5912

[quick-cocos2d-x lua学习] 官网之多分辨率适配详解

转自官方网站:http://cn.quick-x.com/?p=1436 感觉官网的这篇文章很不错,为了自己日后查看方便,就转过来了~ 下面是正题: 多种分辨率的适配一直都是一个蛋疼的问题,各家公...
  • kyo7552
  • kyo7552
  • 2013年12月06日 11:11
  • 4205

cocos2d-x Scale9Sprite的使用方法 lua篇

这里简单记录一下Scale9sprite的使用方法,其实使用这个方法主要是用来拉伸图片,好处就是该方法拉伸的程度不会像setScale方法这样严重扭曲变形。而是将一个纹理分为九个部分,也就是九宫格,上...

cocos2dx 利用CCLabelTTF设置字的水平间距与垂直间距

cocos2dx 利用CCLabelTTF设置字的水平间距与垂直间距  在项目中对于文字的显示要求会有很多种,比如加描边、加阴影、个别文字加颜色、字的行间距与列间距等...

cocos-2dx中对字符串逻辑长度的简单处理

最近在处理字符串长度时,遇到很多问题;但是在网上没有找到合适的内容。后来公司同事说了一个想法,作为一个新人的我,觉得还是挺实用的。步骤如下: 创建一个label来获取逻辑尺寸 首先创建一个label,...

cocos2dx 3.x Label使用

cocos2dx cc.label字体颜色在3.x中,Label支持四种方式的标签创建。并新增了阴影Shadow、轮廓Outline、发光Glow效果的支持。还支持文字内容的行间距、文字间距、自动换行...

Cocos2d-x Lua中使用标签

游戏场景中的文字包括了静态文字和动态文字。静态文字如下图所示游戏场景中①号文字“COCOS2DX”,动态文字如图4-1所示游戏场景中的②号文字“Hello World”。静态文字一般是由美工使用Pho...

[寒江孤叶丶的Cocos2d-x之旅_36]用LUA实现UTF8的字符串基本操作 UTF8字符串长度,UTF8字符串剪裁等

原创文章,欢迎转载,转载请注明:文章来自[寒江孤叶丶的Cocos2d-x之旅系列] 博客地址:http://blog.csdn.net/qq446569365 一个用于UTF8字符串操作的类,...

Lua中字符串库的一些操作

在Lua里面程序只能创建字符串常亮、链接字符串及获取字符串的长度。但是呢,它无法作进一步的操作,就是说,它无法提取子串或者检索字符串的内容。在Lua里面真正的字符串操作能力来自于字符串库(String...

UILabel字体加粗等属性和特效

/*     Accessing the Text Attributes     text  property       font  property       textColor  pr...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:cocos2d-x 中lua自动控制label宽度(适用于多国语言版)
举报原因:
原因补充:

(最多只允许输入30个字)