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 01:41:49 |
👁️ 阅读: 5
这段代码的问题在于创建输入框时,`win_TextInput.inPut` 这个对象获取失败了。让我帮你分析一下:
主要问题出在这一行:
```lua
GUI:TextInput_setInputMode(win_TextInput.inPut, 5)
```
`win_TextInput.inPut` 为 `nil` 的原因是你没有正确获取到 `TextInput_Create` 返回的对象。在996引擎中,`GUI:TextInput_Create` 创建后需要单独获取对象。
修改后的代码应该这样写:
```lua
GUI:addOnClickEvent(npc.ui.donate_btn, function()
local win_TextInput = GUI:Win_Create("win_TextInput", 0, 0, 0, 0)
GUI:setVisible(npc.ui.bg, false)
-- 创建主背景
local inPut_mainBg = GUI:Image_Create(win_TextInput, "inPut_mainBg", 165, 150, "res/public/1900000610.png")
GUI:setContentSize(inPut_mainBg, 355, 165)
-- 创建按钮
local inPut_btn1 = GUI:Button_Create(inPut_mainBg, "inPut_btn1", 160, 15, "res/public/1900001003.png")
local inPut_btn2 = GUI:Button_Create(inPut_mainBg, "inPut_btn2", 260, 15, "res/public/1900001005.png")
-- 创建文本
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 textInput = GUI:TextInput_Create(inPut_bg, "inPut", 0, 0, 220, 40, 16)
-- 设置输入类型
GUI:TextInput_setInputMode(textInput, 5)
-- 设置最大长度
GUI:TextInput_setMaxLength(textInput, 10)
-- 添加输入框事件监听
GUI:TextInput_addOnEvent(textInput, function(_, eventType)
if eventType == 1 then
local inputText = GUI:TextInput_getString(textInput)
SL:print("输入的内容是: " .. tostring(inputText))
end
end)
-- 添加确定按钮点击事件
GUI:addOnClickEvent(inPut_btn1, function()
local amount = GUI:TextInput_getString(textInput)
SL:print("确定捐献: " .. tostring(amount))
GUI:Win_Close(win_TextInput)
GUI:setVisible(npc.ui.bg, true)
end)
-- 添加取消按钮点击事件
GUI:addOnClickEvent(inPut_btn2, function()
GUI:Win_Close(win_TextInput)
GUI:setVisible(npc.ui.bg, true)
end)
end)
```
**关键修改点:**
1. 将 `GUI:TextInput_Create` 的返回值保存到变量 `textInput` 中
2. 使用这个变量来调用后续的输入框函数
3. 添加了输入框事件监听和按钮事件处理
4. 关闭窗口后恢复主界面背景的显示
**注意:** `GUI:TextInput_getString` 是获取输入框内容的函数,记得在确定按钮中使用它来获取用户输入的值。
下次创建控件时,记得把创建函数的返回值保存起来,这样才能在后续操作中使用这个对象!
← 返回问答库