|
本帖最后由 lsl330 于 2023-4-21 23:38 编辑
这样太麻烦啦,每次定义颜色都要新建一个table,其实简单参照对话,就能发现有简单得多的办法。
function DrawStringMC(x, y, s, color, size)
if x==-1 then
local ll=#s;
local w=size*ll/2+2*CC.MenuBorderPixel;
x=(CC.ScreenW-size/2*ll-2*CC.MenuBorderPixel)/2;
end
if y == -1 then
y = (CC.ScreenH - size - 2 * CC.MenuBorderPixel) / 2
end
local cx = 0
local function readstr(str)
local T1={{"R",C_RED},{"G",C_GOLD},{"B",C_BLACK},{"W",C_WHITE},{"O",C_ORANGE},{"L",LimeGreen},{"D",M_DeepSkyBlue},{"Z",LightPurple},{"Y",C_YELLOW},{"K",C_PINK}}
for i=1,10 do
if T1[1]==str then return 1,T1[2] end
end
return 0
end
while string.len(s) >= 1 do
local str
str=string.sub(s,1,1)
if string.byte(s,1,1) > 127 then --判断单双字符
str=string.sub(s,1,2)
s=string.sub(s,3,-1)
else
str=string.sub(s,1,1)
s=string.sub(s,2,-1)
end
--开始控制逻辑
local kz1,kz2=readstr(str)
if kz1==1 then
color=kz2
else
lib.DrawStr(x+size*cx, y, str, color, size, CC.FontName, CC.SrcCharSet, CC.OSCharSet)
cx=cx+string.len(str)/2
end
end
end
以后输出字符时,和say对话一样,就可以了
譬如
DrawStringMC(100, 100, "R铁血W丹心O论坛", C_WHITE, 16)
想要其他颜色,自行定义T1就好。 |
|