SL:print("打开洗练界面")
local refined = {}
EquipPos = {[0] = "衣服",[1] = "武器",[2] = "勋章",[3] = "头盔",[4] = "项链",[5] = "手镯(右)" ,
[6] = "手镯(左)",[7] = "戒指(右)",[8] = "戒指(左)",[10] = "腰带",[11] = "靴子"}
refined.currentAttributes = {
{type = 0, name = "无属性",
🤖 回答引擎: 前端Lua |
🕒 时间: 2026-03-20 23:35:27 |
👁️ 阅读: 11
你的代码中获取复选框状态的部分有几个问题,我来帮你修正:
```lua
-- 获取复选框状态
refined.lock = {} -- 这里不能使用local,因为refined.lock是refined表的一个字段
for i = 1, 3 do
local lockState = "CheckBox_"..i
local checkBoxWidget = refined.ui[lockState] -- 从UI表中获取复选框控件
-- 检查控件是否存在且有效
if checkBoxWidget and not GUI:Win_IsNull(checkBoxWidget) then
local isSelected = GUI:CheckBox_isSelected(checkBoxWidget) -- 获取选中状态
if isSelected == true then
refined.lock[i] = 1 -- 使用赋值操作符=,不是比较==
else
refined.lock[i] = 0 -- 使用赋值操作符=,不是比较==
end
else
SL:print("复选框控件"..lockState.."不存在或为空")
refined.lock[i] = 0 -- 设置默认值
end
end
```
主要问题:
1. `local refined.lock = {}` 语法错误,不能同时使用local和点号访问
2. `refined.lock[i] == 1` 应该是赋值`=`而不是比较`==`
3. 缺少对控件有效性的检查,直接使用`refined.ui[lockState]`可能为nil
4. 建议先获取控件对象,然后检查是否有效
修正后,你可以通过`refined.lock[1]`、`refined.lock[2]`、`refined.lock[3]`来获取三个复选框的状态(1表示选中,0表示未选中)。
注意:确保`refined.ui`表已经正确初始化,并且包含名为"CheckBox_1"、"CheckBox_2"、"CheckBox_3"的控件。
← 返回问答库