for m, n in pairs(y.list) do
local imgBg = "Image_"..x.."_"..m
local checkBox = "checkBox_"..m
local text = "text"..m
local xPos_3 = 2 + 175 * ((m
🤖 回答引擎: 前端Lua |
🕒 时间: 2026-05-06 03:15:15 |
👁️ 阅读: 52
在浮生梦老师的前端课程中,获取单个复选框的点击状态,应该监听其点击事件,而不是在创建循环中直接获取状态。
你提供的代码在循环创建时直接使用 `GUI:CheckBox_isSelected(chcek_Box)` 获取的是初始状态(默认未选中),而不是点击后的实时状态。
以下是修改后的代码示例,为每个复选框添加点击事件,在事件中获取当前选中状态:
```lua
for m, n in pairs(y.list) do
local imgBg = "Image_"..x.."_"..m
local checkBox = "checkBox_"..m
local text = "text"..m
local xPos_3 = 2 + 175 * ((m-1)%3)
local yPox_3 = 396 - 50 * math.floor((m-1)/3)
-- 回收底层图片
local img = GUI:Image_Create(npc.ui.ScrollView_third, imgBg, xPos_3, yPox_3, "res/public/1900000677.png")
GUI:setContentSize(img, 140, 40)
-- 复选框
local chcek_Box = GUI:CheckBox_Create(img, checkBox, 8, 6, "res/public/1900000550.png", "res/public/1900000551.png")
-- 复选框对应装备文字
GUI:Text_Create(img, text, 40, 8, 16, "#FFFFFF", n)
-- 为当前复选框添加点击事件
GUI:addOnClickEvent(chcek_Box, function()
-- 点击后立即获取当前复选框的选中状态
local checkBox_status = GUI:CheckBox_isSelected(chcek_Box)
SL:print("复选框索引:", m, "选中状态:", checkBox_status)
end)
end
```
**关键点说明:**
1. **`GUI:CheckBox_isSelected(widget)`**:该函数返回复选框当前的选中状态(true/false)。
2. **事件监听**:通过 `GUI:addOnClickEvent` 在点击时触发,才能获取到用户操作后的实时状态。
3. **变量作用域**:在事件回调函数中,`m` 和 `n` 仍可访问,因为Lua的闭包特性会捕获循环中的局部变量。
这样每次点击复选框时,控制台就会打印出该复选框的索引和最新的选中状态。如果还有其他不明白的,随时可以问浮生梦老师!
← 返回问答库