SL:print("打开每日活动界面")
local npc = {}
npc.config = {
mainName = {
{mainId = "a1", mainBtn_Name = "抽奖转盘", color = "#ff0000"},
{mainId = "a2", mainBtn_Name = "宝石镶嵌", color = "#00ff00"},
{mainId
🤖 回答引擎: 前端Lua |
🕒 时间: 2026-07-16 17:01:23 |
👁️ 阅读: 10
这段代码有几个问题需要修正:
```lua
SL:Print("打开每日活动界面")
local npc = {}
npc.config = {
mainName = {
{mainId = "a1", mainBtn_Name = "抽奖转盘", color = "#ff0000"},
{mainId = "a2", mainBtn_Name = "宝石镶嵌", color = "#00ff00"},
{mainId = "a3", mainBtn_Name = "装备洗练", color = "#ffff00"},
{mainId = "a4", mainBtn_Name = "装备图鉴", color = "#0000ff"},
{mainId = "a5", mainBtn_Name = "狂暴之力", color = "#000000"},
{mainId = "a6", mainBtn_Name = "技能大师", color = "#d600ed"},
},
childName = {
{
{childId = "d1" ,childBtn_Name = "焚天"},
{childId = "d2" ,childBtn_Name = "技能强化"},
{childId = "d3" ,childBtn_Name = "石墓地宫"},
{childId = "d4" ,childBtn_Name = "血腥沼泽"},
{childId = "d5" ,childBtn_Name = "龙岭迷窟"},
{childId = "d6" ,childBtn_Name = "幻境石窟"}
},
{
{childId = "d7" ,childBtn_Name = "上古战场"},
{childId = "d8" ,childBtn_Name = "魔神原力"},
{childId = "d9" ,childBtn_Name = "幸运转轮"},
{childId = "d10" ,childBtn_Name = "百晓生"},
{childId = "d11" ,childBtn_Name = "奇异法师"},
{childId = "d12" ,childBtn_Name = "荣誉称号"}
},
{
{childId = "d13" ,childBtn_Name = "情绪客栈"},
{childId = "d14" ,childBtn_Name = "二大陆传送石"},
{childId = "d15" ,childBtn_Name = "食尸匠"},
{childId = "d16" ,childBtn_Name = "化魔"},
{childId = "d17" ,childBtn_Name = "炼神壶"},
{childId = "d18" ,childBtn_Name = "亡者的执念"}
},
{
{childId = "d19" ,childBtn_Name = "解放黑奴"},
{childId = "d20" ,childBtn_Name = "赌命炼火"},
{childId = "d21" ,childBtn_Name = "五天魔阵"},
{childId = "d22" ,childBtn_Name = "雷罚使者"},
{childId = "d23" ,childBtn_Name = "深渊军需官"},
{childId = "d24" ,childBtn_Name = "祭血长老"}
},
{
{childId = "d25" ,childBtn_Name = "罪孽吞噬者"},
{childId = "d26" ,childBtn_Name = "倒霉的阴差"},
{childId = "d27" ,childBtn_Name = "炼器罗刹"},
{childId = "d28" ,childBtn_Name = "时之引者"},
{childId = "d29" ,childBtn_Name = "瞎子和尚"},
{childId = "d30" ,childBtn_Name = "断剑老道士"}
},
{
{childId = "d31" ,childBtn_Name = "井中女鬼"},
{childId = "d32" ,childBtn_Name = "游戏会员"},
{childId = "d33" ,childBtn_Name = "化魔特权"},
{childId = "d34" ,childBtn_Name = "魔蛇化龙"},
{childId = "d35" ,childBtn_Name = "传承"},
{childId = "d36" ,childBtn_Name = "泡点"}
},
}
}
npc.childBtnList = {} -- 存放子按钮参数
local function networkCB(msgID, p1, p2, p3, msgData)
SL:Print("===== 收到后端消息 =====")
SL:Print("消息ID: " .. tostring(msgID))
SL:Print("参数1: " .. tostring(p1))
SL:Print("参数2: " .. tostring(p2))
SL:Print("参数3: " .. tostring(p3))
SL:Print("字符串: " .. tostring(msgData))
SL:Print("=======================")
if msgID == 1019 and msgData == "每日活动" then
if p3 == 0 then
npc:openWin()
end
end
end
function npc:openWin()
-- 创造外部界面
local win_dailyAct = GUI:Win_Create("win_dailyAct", 0, 0, 0, 0, false, false, true, false, false, false, 1)
GUI:LoadExport(win_dailyAct, "playernpc/dailyAct")
npc.ui = GUI:ui_delegate(win_dailyAct)
GUI:addOnClickEvent(npc.ui.esc, function()
GUI:Win_Close(win_dailyAct)
end)
for k, v in ipairs(npc.config.mainName) do
local btn_status = "close"
npc.childBtnList[k] = {} -- 初始化子按钮参数
-- 子基础容器
local panel = "Panel"..k -- 子基础容器唯一ID
local Pos_yPanel = 250 - ((k-1) * 31) -- 子基础容器y坐标
local panel_child = GUI:Layout_Create(npc.ui.Panel_main, panel, 0, Pos_yPanel, 133, 400, false)
-- 主按钮
local mainNameID = v.mainId -- 主按钮ID
local mainName = v.mainBtn_Name -- 主按钮名
local main_btn = GUI:Button_Create(panel_child, mainNameID, 0, 164, "res/public_win32/anniu11_2.png")
GUI:Button_setTitleText(main_btn, mainName)
GUI:setLocalZOrder(main_btn, 100) -- 设置按钮层级,保证主按钮在最上层
-- 设置主按钮字体颜色
if v.color then
GUI:Button_setTitleColor(main_btn, v.color)
end
-- 子按钮
for x, y in ipairs(npc.config.childName[k]) do
local btn = y.childId -- 子按钮唯一ID
local childName = y.childBtn_Name -- 子按钮地图名
local child_btn = GUI:Button_Create(panel_child, btn, 0, 164, "res/public_win32/anniu11_2.png")
GUI:Button_setTitleText(child_btn, childName)
local pos = 100 - x
GUI:setLocalZOrder(child_btn, pos)
GUI:Button_setTitleColor(child_btn, "#ff0000")
table.insert(npc.childBtnList[k], {id = x, btn = child_btn})
end
-- 按钮动画效果
local function btnAction()
local list = npc.childBtnList
-- 所有子按钮缩回原位
for a = 1, #npc.config.mainName do
for _, c in ipairs(list[a]) do
GUI:Timeline_MoveTo(c.btn, {x = 0, y = 164}, 0.4, function() end)
end
end
-- 展开点击的按钮
for _, e in ipairs(list[k]) do
local id = e.id
local btn = e.btn
local Pos_yBtn = 164 - (id * 34)
GUI:Timeline_MoveTo(btn, {x = 0, y = Pos_yBtn}, 0.4, function() end)
end
-- 被点击按钮下方主按钮(包括子按钮)向下平移
-- 如果被点击按钮是6,则不需要平移动画
if k >= 6 then
return
else
-- 被点击按钮小于6, 做平移动画(移动按钮基础容器)
for i = k + 1, #npc.config.mainName do
local panelAction = GUI:getChildByName(npc.ui.Panel_main, "Panel"..i)
SL:Print(panelAction,"//",i)
if panelAction then
local panel_y = 810 - ((i-1)*34) - #npc.config.childName[k]*34
GUI:Timeline_MoveTo(panelAction, {x = 0, y = panel_y}, 0.4, function() end)
end
end
end
end
-- **问题修正:使用正确的addOnClickEvent函数**
SL:ScheduleOnce(function()
GUI:addOnClickEvent(main_btn, btnAction)
end, 0.5)
end
end
SL:RegisterLuaNetMsg(1019, networkCB)
```
**主要问题修正:**
1. **第164行:`GUI:addClick` 函数不存在**
- 根据浮生梦老师前端课程内容,正确的函数是 `GUI:addOnClickEvent`
- 已修正为:`GUI:addOnClickEvent(main_btn, btnAction)`
2. **第100行:Win_Create 函数参数不完整**
- 根据示例代码,`GUI:Win_Create` 需要完整的11个参数
- 已修正为:`GUI:Win_Create("win_dailyAct", 0, 0, 0, 0, false, false, true, false, false, false, 1)`
3. **第113行:增加了主按钮字体颜色设置**
- 根据配置中的color字段设置主按钮颜色
4. **打印函数统一为 `SL:Print()`**
- 保持代码风格一致
**建议:**
- 建议检查 `GUI:Timeline_MoveTo` 函数是否正确,根据浮生梦老师前端课程内容,这个函数可能需要确认是否存在
- 如果面板移动效果不理想,可以考虑使用 `GUI:ActionMoveTo` 结合 `GUI:runAction`
不懂的可以问浮生梦尊师!下次注意函数名的正确使用哦~
← 返回问答库