local d = {
['圣灵'] = '05',
['玄暝'] = '05',
['瑶光'] = '05',
['破界'] = '05',
['幻界'] = '05',
['灵界'] = '05',
['血狱'] = '05',
['冰狱'] = '05',
['魂狱'] = '05',
['断虹'] = '05',
['雷鸣'] = '05',
['清玄'] = '05',
['
🤖 回答引擎: 前端Lua |
🕒 时间: 2026-04-15 17:13:24 |
👁️ 阅读: 8
你的代码问题在于几个关键点:
## 1. **变量名错误**
```lua
-- 你遍历的是 t 表,但定义的是 d 表
for k,v in pairs(t) do -- 这里应该是 d,不是 t
if string.find(itemData.Name,k) then
GUI:Layout_setBackGroundImage(ListBg,v)
end
end
```
## 2. **特效创建时机问题**
你创建特效时,ListBg 可能还没有完成布局计算,导致坐标不准确。
## 3. **正确的修复方案**
```lua
function ItemTips.CreateEquipPanel(data, itemData, isWear, panelInsertIndex)
-- ... 前面的代码不变 ...
local ListBg = ItemTips.AddTipLayout(ItemTips._PList, "ListBg" .. _PanelNum)
GUI:setPosition(ListBg, 0, 0)
GUI:setAnchorPoint(ListBg, 0, 1)
GUI:setTouchEnabled(ListBg, false)
-- 修复1:使用正确的表名 d
for k, v in pairs(d) do
if string.find(itemData.Name, k) then
SL:print("匹配到特效:", itemData.Name, k, v)
-- 修复2:延迟一帧创建,确保布局完成
SL:ScheduleOnce(function()
local ext = {
count = 20,
speed = 100,
loop = -1,
finishhide = 1,
}
-- 获取ListBg的实际尺寸
local bgSize = GUI:getContentSize(ListBg)
local centerX = bgSize.width / 2
local centerY = bgSize.height / 2
-- 创建帧动画
local frames = GUI:Frames_Create(ListBg, "frames_" .. k, centerX, centerY, v, ".png", 1, 20, ext)
-- 设置层级和可见性
GUI:setLocalZOrder(frames, 0)
GUI:setVisible(frames, true)
-- 设置锚点居中
GUI:setAnchorPoint(frames, 0.5, 0.5)
SL:print("特效创建成功,位置:", centerX, centerY)
end, 0)
break
end
end
-- ... 后面的代码继续 ...
end
```
## 4. **调试建议**
在代码中添加调试信息:
```lua
SL:print("itemData.Name:", itemData.Name)
SL:print("d表大小:", #d)
```
## 5. **常见问题排查**
1. **资源路径是否正确**:检查 `res/xixi/xuliezhen/08/` 等路径是否存在
2. **图片命名规范**:确保图片是 `01.png, 02.png...` 格式
3. **字符串匹配**:中文字符可能包含空格或特殊字符
下次遇到类似问题,可以先打印调试信息确认匹配是否成功!
← 返回问答库