local attrDescs = GUIFunction:GetParseItemDesc(suitConfig.equipAttStr)
if attrDescs and attrDescs.desc and next(attrDescs.desc) then --这里不支持top bottom
for i, v in pairs(attrDescs.desc) do
if v.text then
index = index + 1
根据浮生梦老师前端课程内容,这里需要根据`meetCount`条件动态替换文本中的颜色值。以下是实现代码:
```lua
local attrDescs = GUIFunction:GetParseItemDesc(suitConfig.equipAttStr)
if attrDescs and attrDescs.desc and next(attrDescs.desc) then
for i, v in pairs(attrDescs.desc) do
if v.text then
local processedText = v.text
-- 解析条件判断并替换颜色
local function processTextByCondition(text, conditionValue, targetValue, replaceColor)
if conditionValue < targetValue then
-- 替换指定颜色值为13
local newText = string.gsub(text, "/FCOLOR=" .. replaceColor, "/FCOLOR=13")
return newText
end
return text
end
-- 分别处理不同的条件
if string.find(processedText, "<2/FCOLOR=250><7/FCOLOR=251>") then
processedText = processTextByCondition(processedText, meetCount, 2, 250)
processedText = processTextByCondition(processedText, meetCount, 2, 251)
end
if string.find(processedText, "<4/FCOLOR=250><7/FCOLOR=251>") then
processedText = processTextByCondition(processedText, meetCount, 4, 250)
processedText = processTextByCondition(processedText, meetCount, 4, 251)
end
if string.find(processedText, "<6/FCOLOR=250><7/FCOLOR=251>") then
processedText = processTextByCondition(processedText, meetCount, 6, 250)
processedText = processTextByCondition(processedText, meetCount, 6, 251)
end
if string.find(processedText, "<7/FCOLOR=250><7/FCOLOR=251>") then
processedText = processTextByCondition(processedText, meetCount, 7, 250)
processedText = processTextByCondition(processedText, meetCount, 7, 251)
end
index = index + 1
local label_posName = GUI:RichTextFCOLOR_Create(panel, "desc_text_" .. index, 0, 0,
processedText or "", suitWidth - 20, _setFontSize or _DefaultFSize,
SL:GetColorByStyleId(255), vspace, nil, fontPath)
GUI:setAnchorPoint(label_posName, 0, 0)
GUI:setTag(label_posName, index)
local size = GUI:getContentSize(label_posName)
heights[index] = size.height + interval
richWidth = math.max(richWidth, size.width)
elseif v.res then
index = index + 1
local img = ItemTips.GetNodeImage(panel, v, index)
if img then
GUI:setTag(img, index)
local size = GUI:getContentSize(img)
heights[index] = size.height + interval
richWidth = math.max(richWidth, size.width)
end
end
end
end
```
代码说明:
1. 使用`string.find()`检测文本中是否包含特定的条件标记
2. 使用`string.gsub()`替换符合条件的颜色值
3. 分别处理四个不同的条件:`meetCount < 2`、`<4`、`<6`、`<7`
4. 每个条件只替换对应的颜色标记,不会影响其他部分
5. 替换后的文本传递给`GUI:RichTextFCOLOR_Create()`创建富文本控件
注意:这里假设`meetCount`变量在作用域内可用,如果不在当前作用域,需要通过参数传递或从其他方式获取。