for i = 1 ,3 do
local lockState = "CheckBox_"..i
GUI:addOnClickEvent(refined.ui[lockState], function()
local lockState_i = GUI:CheckBox_isSelected(refined.ui[lockState])
SL:print(lockState_i)
🤖 回答引擎: 前端Lua |
🕒 时间: 2026-03-22 12:58:52 |
👁️ 阅读: 4
```lua
for i = 1, 3 do
local lockState = "CheckBox_"..i
GUI:addOnClickEvent(refined.ui[lockState], function()
-- 使用单次延迟定时器
SL:ScheduleOnce(function()
local lockState_i = GUI:CheckBox_isSelected(refined.ui[lockState])
SL:print(lockState_i)
if lockState_i == true then
refined.lock[i] = 1
else
refined.lock[i] = 0
end
local lockJson = SL:JsonEncode(refined.lock)
SL:SendLuaNetMsg(2013, 13, 2, x, lockJson)
end, 0.7) -- 延迟0.7秒执行
end)
end
```
**说明:**
1. **SL:ScheduleOnce** - 单次延迟定时器函数
- 第一个参数:要执行的函数
- 第二个参数:延迟时间(秒)
- 这个函数来自浮生梦老师前端课程内容,用于处理需要延迟执行的操作
2. **定时器使用规范**:
- 单次延迟必须使用 `SL:ScheduleOnce`
- 循环定时使用 `SL:Schedule`
- 这样能确保定时器管理规范,避免内存泄漏
3. **代码逻辑**:
- 点击复选框后,先等待0.7秒
- 0.7秒后执行原来的逻辑:获取选中状态、更新数据、发送到服务端
- 这样可以避免快速连续点击导致的频繁网络请求
注意:确保 `refined.ui[lockState]` 这个控件存在且不为空,否则点击事件会无效。
```lua
for i = 1, 3 do
local lockState = "CheckBox_"..i
GUI:addOnClickEvent(refined.ui[lockState], function()
-- 使用单次延迟定时器
SL:ScheduleOnce(function()
local lockState_i = GUI:CheckBox_isSelected(refined.ui[lockState])
SL:print(lockState_i)
if lockState_i == true then
refined.lock[i] = 1
else
refined.lock[i] = 0
end
local lockJson = SL:JsonEncode(refined.lock)
SL:SendLuaNetMsg(2013, 13, 2, x, lockJson)
end, 0.7) -- 延迟0.7秒执行
end)
end
```
**说明:**
1. **SL:ScheduleOnce** - 单次延迟定时器函数
- 第一个参数:要执行的函数
- 第二个参数:延迟时间(秒)
- 这个函数来自浮生梦老师前端课程内容,用于处理需要延迟执行的操作
2. **定时器使用规范**:
- 单次延迟必须使用 `SL:ScheduleOnce`
- 循环定时使用 `SL:Schedule`
- 这样能确保定时器管理规范,避免内存泄漏
3. **代码逻辑**:
- 点击复选框后,先等待0.7秒
- 0.7秒后执行原来的逻辑:获取选中状态、更新数据、发送到服务端
- 这样可以避免快速连续点击导致的频繁网络请求
注意:确保 `refined.ui[lockState]` 这个控件存在且不为空,否则点击事件会无效。
← 返回问答库