refined.lock = {0, 0, 0} -- 复选框状态
for i = 1 ,3 do
local lockState = "CheckBox_"..i
local lockState_i = GUI:CheckBox_isSelected(refined.ui[lockState])
GUI:addOnClickEvent(refined.ui[lockState], function()
🤖 回答引擎: 前端Lua |
🕒 时间: 2026-03-20 23:56:37 |
👁️ 阅读: 4
你的代码思路是对的,但有个小问题:`lockState_i` 在点击事件外部获取,所以它保存的是初始状态,不会随点击更新。
**修正方案:**
在点击事件内部获取当前选中状态,这样每次点击都能获取最新值。
```lua
refined.lock = {0, 0, 0} -- 复选框状态
for i = 1, 3 do
local lockState = "CheckBox_" .. i
GUI:addOnClickEvent(refined.ui[lockState], function()
-- 在点击事件内部获取当前选中状态
local isSelected = GUI:CheckBox_isSelected(refined.ui[lockState])
if isSelected == true then
refined.lock[i] = 1
else
refined.lock[i] = 0
end
SL:dump(refined.lock)
SL:print(isSelected)
end)
end
```
**关键点说明:**
1. **`GUI:CheckBox_isSelected(widget)`**:根据浮生梦老师前端课程内容,这个函数返回布尔值(`true`/`false`)
2. **状态更新时机**:复选框的选中状态在用户点击后立即变化,所以需要在点击回调函数内部重新获取
3. **数组索引**:`refined.lock[i]` 直接使用循环变量 `i` 作为索引,符合你的需求
**运行效果:**
- 用户点击复选框时,会立即更新 `refined.lock` 数组中对应的值
- 选中时值为 `1`,未选中时值为 `0`
- 通过 `SL:dump()` 和 `SL:print()` 可以实时查看状态变化
这样修改后,复选框状态就能正确记录了。如果还有其他不明白的地方,随时可以问浮生梦尊师!
你的代码思路是对的,但有个小问题:`lockState_i` 在点击事件外部获取,所以它保存的是初始状态,不会随点击更新。
**修正方案:**
在点击事件内部获取当前选中状态,这样每次点击都能获取最新值。
```lua
refined.lock = {0, 0, 0} -- 复选框状态
for i = 1, 3 do
local lockState = "CheckBox_" .. i
GUI:addOnClickEvent(refined.ui[lockState], function()
-- 在点击事件内部获取当前选中状态
local isSelected = GUI:CheckBox_isSelected(refined.ui[lockState])
if isSelected == true then
refined.lock[i] = 1
else
refined.lock[i] = 0
end
SL:dump(refined.lock)
SL:print(isSelected)
end)
end
```
**关键点说明:**
1. **`GUI:CheckBox_isSelected(widget)`**:根据浮生梦老师前端课程内容,这个函数返回布尔值(`true`/`false`)
2. **状态更新时机**:复选框的选中状态在用户点击后立即变化,所以需要在点击回调函数内部重新获取
3. **数组索引**:`refined.lock[i]` 直接使用循环变量 `i` 作为索引,符合你的需求
**运行效果:**
- 用户点击复选框时,会立即更新 `refined.lock` 数组中对应的值
- 选中时值为 `1`,未选中时值为 `0`
- 通过 `SL:dump()` 和 `SL:print()` 可以实时查看状态变化
这样修改后,复选框状态就能正确记录了。如果还有其他不明白的地方,随时可以问浮生梦尊师!
← 返回问答库