前言
在游戏中,我们经常会遇到汉字的多行显示,比如名字竖行显示等。如下图:
为了实现上面的效果,lua实现分行是通过 \n 实现的,所以我们需要取出汉字,然后插入 \n 实现分行效果。还有一种就是设置Label的的实际大小,也可以实现分行效果。
操作中文字符串,获取字符串长度
local str = "哈哈哈哈"
local _,strTest = string.gsub(str,'[\128-\255][\128-\255]',' ')
local _, count = string.gsub(str, "[^\128-\193]", "")
print(count)
print(strTest)
中文字符串中单个汉字取出,放到tab中
简单实现一个功能函数,将字符串中的单个汉字取出,放到一个数组中,然后再进行其他操作。
实现函数为:
--功能将汉字插入\n分行显示
--可扩展,比如一行显示几个字等
--这里是一个测试n每行显示一个
function branchStr(str)
local sNum = num or 1
local tab = {}
for uchar in string.gfind(str, "[%z\1-\127\194-\244][\128-\191]*") do
tab[#tab+1] = uchar
end
local resultStr = ""
for i=1,#tab do
resultStr = resultStr..tab[i].."\n"
end
return resultStr
end
调用上面的函数,我们可以将得到插入\n 的字符串,然后在文本框中使用就可以了。这里的函数可以扩展,比如一行显示多少个汉字等。
quick lua 多行显示第二种方式控制文本的大小
--------------------------------
-- 使用 TTF 字体创建文字显示对象,并返回 Label 对象。
-- @function [parent=#display] newTTFLabel
-- @param table params 参数表格对象
-- @return Label#Label ret (return value: cc.Label) Label对象
--[[--
使用 TTF 字体创建文字显示对象,并返回 Label 对象。
可用参数:
- text: 要显示的文本
- font: 字体名,如果是非系统自带的 TTF 字体,那么指定为字体文件名
- size: 文字尺寸,因为是 TTF 字体,所以可以任意指定尺寸
- color: 文字颜色(可选),用 cc.c3b() 指定,默认为白色
- align: 文字的水平对齐方式(可选)
- valign: 文字的垂直对齐方式(可选),仅在指定了 dimensions 参数时有效
- dimensions: 文字显示对象的尺寸(可选),使用 cc.size() 指定
- x, y: 坐标(可选)
align 和 valign 参数可用的值:
- cc.TEXT_ALIGNMENT_LEFT 左对齐
- cc.TEXT_ALIGNMENT_CENTER 水平居中对齐
- cc.TEXT_ALIGNMENT_RIGHT 右对齐
- cc.VERTICAL_TEXT_ALIGNMENT_TOP 垂直顶部对齐
- cc.VERTICAL_TEXT_ALIGNMENT_CENTER 垂直居中对齐
- cc.VERTICAL_TEXT_ALIGNMENT_BOTTOM 垂直底部对齐
~~~ lua
dimensions 参数就是设置显示的大小
--描述
local desLabel = cc.ui.UILabel.new({
text = "哈喽哈鲁哈喽哈鲁哈喽哈鲁哈喽哈鲁哈喽哈鲁哈喽哈鲁哈喽哈鲁哈喽哈鲁哈喽哈鲁哈喽哈鲁哈喽哈鲁哈喽哈鲁",--level
align = cc.ui.TEXT_ALIGN_CENTER,
color = cc.c3b(255, 255, 220),
size = 20,
dimensions = cc.size(bg:getContentSize().width-10,60)
})
:align(display.CENTER,bg:getContentSize().width/2,60)
:addTo(bg)
dimensions :参数