在lua代码中使用table给FontDefinition填值,传给c++时发现有些值发生丢失:如下
local params = {text=“Hello 你好!”, font=“Arial”, size=40, textColor=cc.c3b(255, 255, 255)}
local font_def = {}
– fontName, fontSize, fontAlignmentH, fontAlignmentV, fontFillColor, fontDimensions,
– shadowEnabled, shadowOffset, shadowBlur, shadowOpacity
– strokeEnabled, strokeColor, strokeSize
font_def.fontName = params.font or display.DEFAULT_TTF_FONT
font_def.fontSize = params.size or display.DEFAULT_TTF_FONT_SIZE
font_def.fontAlignmentH = params.align or cc.TEXT_ALIGNMENT_LEFT
font_def.fontAlignmentV = params.valign or cc.VERTICAL_TEXT_ALIGNMENT_TOP
font_def.fontFillColor = params.textColor or display.COLOR_WHITE
font_def.fontDimensions = params.dimensions or cc.size(0, 0)
if params.shadow ~= nil then
font_def.shadowEnabled = true
font_def.shadowOffset = params.shadow.offset or cc.size(1, -1)
font_def.shadowBlur = params.shadow.blur or 1
font_def.shadowOpacity = params.shadow.opacity or 1
end
if params.stroke ~= nil then
font_def.strokeEnabled = true
font_def.strokeColor = params.stroke.color or display.COLOR_BLUE
font_def.strokeSize = params.stroke.size or 1
end
--logt(font_def) 打印正确
local label = cc.LabelTTF:createWithFontDefinition((params.text or “”), font_def)
–label:setTextDefinition(font_def)
return label
其中红字处是关键代码,调试createWithFontDefinition或setTextDefinition时, 发现fontName为空,c3b的color均为0,而lua代码部分打印结果是正确的