function JingYanShangHang:main(npcData)
self.npcData = npcData or {}
self.npcID = self.npcData.npcID or 0
UIManager:winCreate(self)
UIManager.widget_scale(self.parent, math.random(3), 0.15)
UIManager:addOpenExcelBtn(self)
self
🤖 回答引擎: 前端Lua |
🕒 时间: 2026-04-29 19:10:31 |
👁️ 阅读: 5
你的代码有几个问题需要修正:
1. **变量命名不一致**:你在`main`函数中初始化的是`self.num1`、`self.num2`、`self.num3`,但在点击事件中访问的却是`self["num_"..i]`,这是不同的变量。
2. **nil值错误**:`self["num_"..i]`在第一次点击时是nil,不能直接进行算术运算。
3. **打印函数不规范**:应该使用`SL:Print()`而不是`print()`。
4. **类型转换问题**:`GUI:TextInput_setPlaceHolder()`需要字符串参数,但`self["num_"..i]`是数值。
修正后的代码:
```lua
function JingYanShangHang:main(npcData)
self.npcData = npcData or {}
self.npcID = self.npcData.npcID or 0
UIManager:winCreate(self)
UIManager.widget_scale(self.parent, math.random(3), 0.15)
UIManager:addOpenExcelBtn(self)
-- 初始化所有num变量
self.num1 = 0
self.num2 = 0
self.num3 = 0
self.num_1 = 0 -- 新增:对应self["num_1"]
self.num_2 = 0 -- 新增:对应self["num_2"]
self.num_3 = 0 -- 新增:对应self["num_3"]
self:syncData(true)
end
function JingYanShangHang:initUI(data)
local ui = self.ui
UILib:setContentSize(ui.ChuShou_1, 74, 38)
UILib:setContentSize(ui.ChuShou_2, 74, 38)
UILib:setContentSize(ui.GouMai_1, 74, 38)
UILib:setContentSize(ui.GouMai_2, 74, 38)
UILib:setContentSize(ui.Image_BG1, 112, 38)
UILib:setContentSize(ui.Image_BG2, 112, 38)
UILib:setContentSize(ui.Image_BG3, 112, 38)
GUI:TextInput_addOnEvent(ui.TextInput_1, function(sender, eventType)
if eventType == 1 then
self.num1 = tonumber(GUI:TextInput_getString(sender))
SL:Print("输入框1的值为", self.num1)
end
end)
GUI:TextInput_addOnEvent(ui.TextInput_2, function(sender, eventType)
if eventType == 1 then
self.num2 = tonumber(GUI:TextInput_getString(sender))
SL:Print("输入框2的值为", self.num2)
end
end)
GUI:TextInput_addOnEvent(ui.TextInput_3, function(sender, eventType)
if eventType == 1 then
self.num3 = tonumber(GUI:TextInput_getString(sender))
SL:Print("输入框3的值为", self.num3)
end
end)
for i = 1, 3 do
UILib:addOnClickEvent(ui["Jia_"..i], function()
self["num_"..i] = self["num_"..i] + 1
SL:Print("输入框"..i.."的值为", self["num_"..i])
GUI:TextInput_setPlaceHolder(ui["TextInput_"..i], tostring(self["num_"..i]))
end)
UILib:addOnClickEvent(ui["Jian_"..i], function()
self["num_"..i] = self["num_"..i] - 1
SL:Print("输入框"..i.."的值为", self["num_"..i])
GUI:TextInput_setPlaceHolder(ui["TextInput_"..i], tostring(self["num_"..i]))
end)
UILib:addOnClickEvent(ui["Max_"..i], function()
GUI:TextInput_setPlaceHolder(ui["TextInput_"..i], _cfg[self.select].maxNum)
end)
end
end
```
**关键修改点:**
1. 在`main`函数中添加了`self.num_1`、`self.num_2`、`self.num_3`的初始化
2. 使用`tostring()`将数值转换为字符串
3. 使用`SL:Print()`替代`print()`
这样修改后,点击事件就不会出现nil值错误了。记得变量命名要一致,避免这种低级错误哦!
← 返回问答库