SL:print("打开沙城捐献界面")
local npc = {}
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))
🤖 回答引擎: 前端Lua |
🕒 时间: 2026-04-30 00:48:43 |
👁️ 阅读: 5
根据浮生梦老师前端课程内容,要实现你的需求,需要在两个按钮的点击事件中分别处理界面的关闭和恢复。以下是修改后的代码:
```lua
SL:print("打开沙城捐献界面")
local npc = {}
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 == 1017 and msgData == "沙城捐献" then
if p3 == 0 then
npc:openWin()
end
end
end
function npc:openWin()
-- 创建外部界面
local win_donate = GUI:Win_Create("win_donate", 0, 0, 0, 0)
GUI:LoadExport(win_donate, "donate")
npc.ui = GUI:ui_delegate(win_donate)
GUI:addOnClickEvent(npc.ui.esc, function()
GUI:Win_Close(win_donate)
end)
-- 设置问号悬停,提示文本
GUI:addMouseOverTips(npc.ui.hint_btn, "str", {x = 0, y = -55}, {x = 0.5, y = 0.5}, nil)
-- 设置输入框
GUI:addOnClickEvent(npc.ui.donate_btn, function()
-- 关闭主背景
GUI:setVisible(npc.ui.bg, false)
-- 创建输入框主背景
local inPut_mainBg = GUI:Image_Create(npc.ui.bg, "inPut_mainBg", 165, 150, "res/public/1900000610799.png")
GUI:setContentSize(inPut_mainBg, 355, 165)
-- 创建输入框确定按钮
local inPut_btn1 = GUI:Button_Create(inPut_mainBg, "inPut_btn1", 160, 15, "res/public/1900001003.png")
GUI:Button_setTitleText(inPut_btn1, "确定")
-- 创建输入框取消按钮
local inPut_btn2 = GUI:Button_Create(inPut_mainBg, "inPut_btn2", 260, 15, "res/public/1900001005.png")
GUI:Button_setTitleText(inPut_btn2, "取消")
-- 创建提示文本
GUI:Text_Create(inPut_mainBg, "inPut_text", 20, 125, 16, "#ffffff", "请输入您要捐献的数量:")
-- 创建输入框背景
local inPut_bg = GUI:Image_Create(inPut_mainBg, "inPut_bg", 95, 75, "res/public/1900015004.png")
-- 创建输入框
local inPut = GUI:TextInput_Create(inPut_bg, "inPut", 0, 0, 220, 40, 16)
GUI:TextInput_setInputMode(inPut, 5)
-- 确定按钮点击事件 - 关闭输入界面
GUI:addOnClickEvent(inPut_btn1, function()
-- 关闭输入框主背景
GUI:setVisible(inPut_mainBg, false)
-- 恢复主背景界面
GUI:setVisible(npc.ui.bg, true)
-- 这里可以添加确认逻辑,比如发送捐献数量
local inputValue = GUI:TextInput_getString(inPut)
SL:print("输入的捐献数量: " .. tostring(inputValue))
end)
-- 取消按钮点击事件 - 恢复主界面
GUI:addOnClickEvent(inPut_btn2, function()
-- 关闭输入框主背景
GUI:setVisible(inPut_mainBg, false)
-- 恢复主背景界面
GUI:setVisible(npc.ui.bg, true)
end)
end)
end
SL:RegisterLuaNetMsg(1017, networkCB)
```
主要修改点:
1. **点击确定按钮时**:使用 `GUI:setVisible(inPut_mainBg, false)` 关闭输入界面,然后用 `GUI:setVisible(npc.ui.bg, true)` 恢复主背景界面。
2. **点击取消按钮时**:同样使用 `GUI:setVisible(inPut_mainBg, false)` 关闭输入界面,然后用 `GUI:setVisible(npc.ui.bg, true)` 恢复主背景界面。
3. **优化了变量存储**:将创建的控件对象保存到局部变量中,方便后续操作。
4. **添加了按钮文字**:使用 `GUI:Button_setTitleText` 为按钮添加文字说明。
这样就能实现你需要的功能:点击确定或取消按钮时关闭输入界面,恢复主背景界面。
← 返回问答库