根据浮生梦老师前端课程内容,你的代码中已经实现了默认点亮镖车的逻辑,但需要确保在 `openWin` 函数中正确初始化 `selectEscortCart`。以下是修改后的代码,确保界面打开时默认点亮第一个镖车:
```lua
SL:print("打开镖局界面")
local npc = {}
local selectEscortCart = nil
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 == 1031 and msgData == "龙门镖局" then
if p2 == 0 then
npc:openWin(p3)
end
if p2 ~= 0 and p3 ~= 0 then
npc:refreshwin(p2, p3)
end
end
end
SL:RegisterLuaNetMsg(1031, networkCB)
function npc:openWin(p3)
local width, height = SL:GetMetaValue("SCREEN_WIDTH"), SL:GetMetaValue("SCREEN_HEIGHT")
local win_bc = GUI:Win_Create("win_bc", 0, 0, width, height)
local mobile, pc = SL:GetMetaValue("PLATFORM_MOBILE"), SL:GetMetaValue("PLATFORM_WINDOWS")
if pc then
local win_bc_1 = GUI:Node_Create(win_bc,"Win_item_k_1", width/2,height/2)
GUI:LoadExport(win_bc_1, "playernpc/escortGoods")
end
if mobile then
local win_bc_1 = GUI:Node_Create(win_bc,"Win_item_k_1", width/2,(height/2 + 20))
GUI:LoadExport(win_bc_1, "playernpc/escortGoods")
end
npc.ui = GUI:ui_delegate(win_bc)
GUI:addOnClickEvent(npc.ui.esc, function()
GUI:Win_Close(win_bc)
end)
-- 刷新花费显示
GUI:Text_setString(npc.ui.cost_test, tostring(p3))
-- 默认点亮第一个镖车(ImageEscortCart_1)
selectEscortCart = npc.ui.ImageEscortCart_1
if not GUI:Win_IsNull(selectEscortCart) then
GUI:setVisible(selectEscortCart, true)
else
SL:print("警告:ImageEscortCart_1 控件不存在")
end
-- 刷新镖车
GUI:addOnClickEvent(npc.ui.btn_refresh, function()
SL:SendLuaNetMsg(2031, 31, 1, 0, "龙门镖局")
end)
-- 确认镖车
GUI:addOnClickEvent(npc.ui.btn_sure, function()
SL:SendLuaNetMsg(2031, 31, 2, 0, "龙门镖局")
end)
end
function npc:refreshwin(p2, p3)
local moneyText = tostring(p3)
GUI:Text_setString(npc.ui.cost_test, moneyText)
if selectEscortCart and not GUI:Win_IsNull(selectEscortCart) then
GUI:setVisible(selectEscortCart, false)
end
selectEscortCart = npc.ui["ImageEscortCart_" .. tostring(p2)]
if selectEscortCart and not GUI:Win_IsNull(selectEscortCart) then
GUI:setVisible(selectEscortCart, true)
end
end
```
**关键修改点:**
1. **确保控件存在判断**:使用 `GUI:Win_IsNull()` 检查控件是否有效,避免空引用错误。
2. **明确默认点亮**:在 `openWin` 函数中直接设置 `selectEscortCart = npc.ui.ImageEscortCart_1`,并设置其可见性为 `true`。
3. **添加错误提示**:如果控件不存在,会输出警告信息,便于调试。
这样修改后,界面打开时会自动点亮第一个镖车(ImageEscortCart_1),后续刷新时也能正确切换点亮状态。如果还有其他问题,可以继续问我哦!