for i, v in pairs(attrDescs.desc) do
SL:print(v.text)
if v.text then
index = index + 1
local label_posName = GUI:RichTextFCOLOR_Create(panel, "desc_text_" .. index, 0, 0, v.text or "", suitWidth - 20, _setFontSize or _DefaultFSize, SL:GetColorByStyle
🤖 回答引擎: 前端Lua |
🕒 时间: 2026-04-07 17:12:01 |
👁️ 阅读: 0
根据你提供的代码逻辑,需要根据 `meetCount` 的值来动态替换富文本字符串中的颜色代码。这里的关键是处理 `v.text` 字符串中的 `<数字/FCOLOR=颜色ID>` 标签。
以下是修改后的代码片段:
```lua
for i, v in pairs(attrDescs.desc) do
SL:print(v.text)
if v.text then
local processedText = v.text
-- 根据 meetCount 条件替换颜色
if meetCount < 2 then
-- 将所有250和251替换成13
processedText = string.gsub(processedText, "250", "13")
processedText = string.gsub(processedText, "251", "13")
elseif meetCount < 4 then
-- 只处理包含"攻击上限"的行
if string.find(processedText, "攻击上限") then
processedText = string.gsub(processedText, "250", "13")
processedText = string.gsub(processedText, "251", "13")
end
elseif meetCount < 6 then
-- 只处理包含"生命上限"的行
if string.find(processedText, "生命上限") then
processedText = string.gsub(processedText, "250", "13")
processedText = string.gsub(processedText, "251", "13")
end
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
```
**代码说明:**
1. **`string.gsub()` 函数**:这是Lua的字符串替换函数,用于将指定的模式替换为新的字符串。
2. **条件判断逻辑**:
- `meetCount < 2`:所有行的250和251都替换成13
- `meetCount < 4`:只替换包含"攻击上限"的行
- `meetCount < 6`:只替换包含"生命上限"的行
3. **`string.find()` 函数**:用于检查字符串中是否包含特定文本。
4. **注意**:替换操作是在创建富文本控件之前进行的,确保显示时已经是处理后的颜色。
如果你需要更精确的匹配(比如只替换FCOLOR标签内的数字),可以使用更复杂的模式匹配:
```lua
processedText = string.gsub(processedText, "FCOLOR=250", "FCOLOR=13")
processedText = string.gsub(processedText, "FCOLOR=251", "FCOLOR=13")
```
这样修改后,富文本的颜色就会根据 `meetCount` 的值动态变化了。
根据你提供的代码逻辑,需要根据 `meetCount` 的值来动态替换富文本字符串中的颜色代码。这里的关键是处理 `v.text` 字符串中的 `<数字/FCOLOR=颜色ID>` 标签。
以下是修改后的代码片段:
```lua
for i, v in pairs(attrDescs.desc) do
SL:print(v.text)
if v.text then
local processedText = v.text
-- 根据 meetCount 条件替换颜色
if meetCount < 2 then
-- 将所有250和251替换成13
processedText = string.gsub(processedText, "250", "13")
processedText = string.gsub(processedText, "251", "13")
elseif meetCount < 4 then
-- 只处理包含"攻击上限"的行
if string.find(processedText, "攻击上限") then
processedText = string.gsub(processedText, "250", "13")
processedText = string.gsub(processedText, "251", "13")
end
elseif meetCount < 6 then
-- 只处理包含"生命上限"的行
if string.find(processedText, "生命上限") then
processedText = string.gsub(processedText, "250", "13")
processedText = string.gsub(processedText, "251", "13")
end
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
```
**代码说明:**
1. **`string.gsub()` 函数**:这是Lua的字符串替换函数,用于将指定的模式替换为新的字符串。
2. **条件判断逻辑**:
- `meetCount < 2`:所有行的250和251都替换成13
- `meetCount < 4`:只替换包含"攻击上限"的行
- `meetCount < 6`:只替换包含"生命上限"的行
3. **`string.find()` 函数**:用于检查字符串中是否包含特定文本。
4. **注意**:替换操作是在创建富文本控件之前进行的,确保显示时已经是处理后的颜色。
如果你需要更精确的匹配(比如只替换FCOLOR标签内的数字),可以使用更复杂的模式匹配:
```lua
processedText = string.gsub(processedText, "FCOLOR=250", "FCOLOR=13")
processedText = string.gsub(processedText, "FCOLOR=251", "FCOLOR=13")
```
这样修改后,富文本的颜色就会根据 `meetCount` 的值动态变化了。
← 返回问答库