local d = {
['圣灵'] = '05',
['玄暝'] = '05',
['瑶光'] = '05',
['破界'] = '05',
['幻界'] = '05',
['灵界'] = '05',
['血狱'] = '05',
['冰狱'] = '05',
['魂狱'] = '05',
['断虹'] = '05',
['雷鸣'] = '05',
['清玄'] = '05',
['
🤖 回答引擎: 前端Lua |
🕒 时间: 2026-04-15 18:55:48 |
👁️ 阅读: 13
根据浮生梦老师前端课程内容,我来帮你修改代码。主要思路是:在创建序列帧特效前,先检查装备名称是否在d表中,如果在则添加特效,否则不创建特效。
修改后的代码如下:
```lua
-- 在创建序列帧特效前添加判断
local frames = nil
for k, v in pairs(d) do
if string.find(itemData.Name, k) then
-- 如果装备名称在d表中,设置背景图
GUI:Layout_setBackGroundImage(ListBg, v)
-- 创建序列帧特效
local ext = {
count = 20,
speed = 100,
loop = -1,
finishhide = 1,
}
frames = GUI:Frames_Create(ListBg, "frames", 0, 0, 'res/xixi/xuliezhen/10/', ".png", 1, 20, ext)
GUI:setVisible(frames, false)
GUI:setLocalZOrder(frames, 0)
break -- 找到匹配项后跳出循环
end
end
-- 后面的代码保持不变...
-- 在调整序列帧位置时,先判断frames是否存在
if frames and not GUI:Win_IsNull(frames) then
-- 根据容器大小调整序列帧的位置和缩放
local bili = 1.128
local kuan = 0.22
if tipsSz.height < 401 then
bili = 1.117
elseif tipsSz.height < 490 then
bili = 1.125
end
if tipsSz.width > 330 then
kuan = 0.37
elseif tipsSz.width > 280 then
kuan = 0.3
elseif tipsSz.width > 230 then
kuan = 0.24
end
GUI:setPosition(frames, tipsSz.width / 2, tipsSz.height / bili)
GUI:setAnchorPoint(frames, 0.5, 0.5)
local targetScaleX = tipsSz.width / 418
local targetScaleY = tipsSz.height / 566
GUI:setScaleX(frames, targetScaleX + kuan)
GUI:setScaleY(frames, targetScaleY - 0.125)
GUI:setVisible(frames, true) -- 调整完毕,显示特效
end
```
**修改说明:**
1. **移动了序列帧创建代码**:将序列帧的创建移到`for k, v in pairs(d) do`循环内部
2. **添加了条件判断**:只有当装备名称在d表中找到匹配项时,才创建序列帧特效
3. **添加了`break`语句**:找到匹配项后立即跳出循环,提高效率
4. **修改了后续判断**:在调整序列帧位置时,先检查`frames`是否存在且不为空
**这样修改后的效果:**
- 如果装备名称包含d表中的任意一个关键词(如"圣灵"、"玄暝"等),会设置背景图并创建序列帧特效
- 如果装备名称不包含d表中的任何关键词,则不会创建序列帧特效
- 序列帧特效的显示/隐藏逻辑保持不变,只在匹配时显示
注意:你的d表中有些值是数字字符串(如'05'、'06'),有些是路径字符串(如'res/xixi/xuliezhen/10/'),在设置背景图时需要注意路径的正确性。
← 返回问答库