--点击的开关
function SettingBasic.CreateClickCell(parent, data)
--修改
local height = 40
if data.id == 62 then
height = 90
end
--修改
--
local Panel_Click = GUI:Layout_Create(parent, "Panel_Click_" .. data.id, 0, 1, 200,
🤖 回答引擎: 前端Lua |
🕒 时间: 2026-07-02 14:34:14 |
👁️ 阅读: 5
你的代码存在几个问题:
1. **重复创建Panel_Click**:在第8行创建了一个Panel_Click后,在第55行又创建了同名控件,这会覆盖前面的创建
2. **逻辑错误**:当data.id == 62时的特殊处理被后面的重复创建覆盖了,导致特殊UI无法显示
修改建议:
```lua
--点击的开关
function SettingBasic.CreateClickCell(parent, data)
--修改
local height = 40
if data.id == 62 then
height = 90
end
--修改
--
local Panel_Click = GUI:Layout_Create(parent, "Panel_Click_" .. data.id, 0, 1, 200, height, false)
GUI:setTouchEnabled(Panel_Click, true)
--修改
if data.id == 62 then
GUI:Layout_setBackGroundImage(Panel_Click, "res/public/bg_bk_001.png")
GUI:Layout_setBackGroundImageScale9Slice(Panel_Click, 0, 40, 0, 40)
local db_zb_att = GUI:Text_Create(Panel_Click, "db_zb_att", 22, 70, 14, "#EFA54A", "职业属性优先")
local db_zb_lv = GUI:Text_Create(Panel_Click, "db_zb_lv", 22, 44, 14, "#EFA54A", "装备级别优先")
GUI:setAnchorPoint(db_zb_lv, 0, 0.5)
GUI:setAnchorPoint(db_zb_att, 0, 0.5)
GUI:setTouchEnabled(db_zb_lv, true)
GUI:setTouchEnabled(db_zb_att, true)
local nimg = "res/public/1900000682.png"
local pimg = "res/public/1900000683.png"
local cb_db_zb_att = GUI:CheckBox_Create(Panel_Click, "cb_db_zb_att", 150, 70, nimg, pimg)
GUI:setContentSize(cb_db_zb_att,30,26)
GUI:setAnchorPoint(cb_db_zb_att, 0, 0.5)
GUI:CheckBox_setSelected(cb_db_zb_att, GongNengOBJ.DB_ZB_LV == 0)
local cb_db_zb_lv = GUI:CheckBox_Create(Panel_Click, "cb_db_zb_lv", 150, 44, nimg, pimg)
GUI:setContentSize(cb_db_zb_lv,30,26)
GUI:setAnchorPoint(cb_db_zb_lv, 0, 0.5)
GUI:CheckBox_setSelected(cb_db_zb_lv, GongNengOBJ.DB_ZB_LV == 1)
GUI:addOnClickEvent(cb_db_zb_att,function ()
GUI:CheckBox_setSelected(cb_db_zb_lv, GUI:CheckBox_isSelected(cb_db_zb_att))
send_xx("GongNeng","QQ_ZB_DB")
end)
GUI:addOnClickEvent(cb_db_zb_lv,function ()
GUI:CheckBox_setSelected(cb_db_zb_att, GUI:CheckBox_isSelected(cb_db_zb_lv))
send_xx("GongNeng","QQ_ZB_DB")
end)
GUI:addOnClickEvent(db_zb_att,function ()
GUI:CheckBox_setSelected(cb_db_zb_lv, not GUI:CheckBox_isSelected(cb_db_zb_lv))
GUI:CheckBox_setSelected(cb_db_zb_att, not GUI:CheckBox_isSelected(cb_db_zb_att))
send_xx("GongNeng","QQ_ZB_DB")
end)
GUI:addOnClickEvent(db_zb_lv,function ()
GUI:CheckBox_setSelected(cb_db_zb_lv, not GUI:CheckBox_isSelected(cb_db_zb_lv))
GUI:CheckBox_setSelected(cb_db_zb_att, not GUI:CheckBox_isSelected(cb_db_zb_att))
send_xx("GongNeng","QQ_ZB_DB")
end)
end
-- 描述
local Text_desc = GUI:Text_Create(Panel_Click, "Text_desc", 22, 20, 12, "#ffffff", data.content or "")
GUI:setAnchorPoint(Text_desc, 0, 0.5)
--选择容器
local CheckBox_able = GUI:Layout_Create(Panel_Click, "CheckBox_able", 135, 19, 44, 18, false)
GUI:setAnchorPoint(CheckBox_able, 0, 0.5)
-- 背景
local Image_5 = GUI:Image_Create(CheckBox_able, "Image_5", 22, 9, "res/private/new_setting/clickbg2.png")
GUI:setAnchorPoint(Image_5, 0.5, 0.5)
--关闭状态
local Panel_1 = GUI:Layout_Create(CheckBox_able, "Panel_1", 0, 0, 44, 18, false)
local Image_8 = GUI:Image_Create(Panel_1, "Image_8", 10, 8, "res/private/new_setting/click3.png")
GUI:setAnchorPoint(Image_8, 0.5, 0.5)
--开启状态
local Panel_2 = GUI:Layout_Create(CheckBox_able, "Panel_2", 0, 0, 44, 18, false)
local Image_5 = GUI:Image_Create(Panel_2, "Image_5", 22, 9, "res/private/new_setting/clickbg1.png")
GUI:setAnchorPoint(Image_5, 0.5, 0.5)
local Image_8 = GUI:Image_Create(Panel_2, "Image_8", 33, 8, "res/private/new_setting/click3.png")
GUI:setAnchorPoint(Image_8, 0.5, 0.5)
--触摸提示
if data.tips then
GUI:Text_enableUnderline(Text_desc)
GUI:setTouchEnabled(Text_desc, true)
GUI:addOnClickEvent(Text_desc, function()
local worldPos = GUI:getTouchEndPosition(Text_desc)
SL:SHOW_DESCTIP(data.tips, nil, worldPos, GUI:p(0, 1))
end)
end
--设置是否开启
local isOn = SL:GetMetaValue("SETTING_ENABLED", data.id)
local enable = isOn == 1
local func = function(enable)
--关闭状态ui
GUI:setVisible(Panel_1, not enable)
--开启状态ui
GUI:setVisible(Panel_2, enable)
end
--刷新开关状态
func(enable)
--开关点击
GUI:addOnClickEvent(Panel_Click, function()
local isOn = SL:GetMetaValue("SETTING_ENABLED", data.id)
local enable = isOn == 1
SL:SetMetaValue("SETTING_VALUE", data.id, enable and { 0 } or { 1 })
--刷新开关状态
func(not enable)
end)
SettingBasic._clickItems[data.id or 0] = Panel_Click
end
```
主要修改:
1. 删除了第55行的重复创建
2. 确保特殊处理(data.id == 62)的UI能正常显示
下次写代码时要注意避免重复创建同名控件,这样会覆盖前面的工作。不懂的可以问浮生梦老师!
你的代码存在几个问题:
1. **重复创建Panel_Click**:在第8行创建了一个Panel_Click后,在第55行又创建了同名控件,这会覆盖前面的创建
2. **逻辑错误**:当data.id == 62时的特殊处理被后面的重复创建覆盖了,导致特殊UI无法显示
修改建议:
```lua
--点击的开关
function SettingBasic.CreateClickCell(parent, data)
--修改
local height = 40
if data.id == 62 then
height = 90
end
--修改
--
local Panel_Click = GUI:Layout_Create(parent, "Panel_Click_" .. data.id, 0, 1, 200, height, false)
GUI:setTouchEnabled(Panel_Click, true)
--修改
if data.id == 62 then
GUI:Layout_setBackGroundImage(Panel_Click, "res/public/bg_bk_001.png")
GUI:Layout_setBackGroundImageScale9Slice(Panel_Click, 0, 40, 0, 40)
local db_zb_att = GUI:Text_Create(Panel_Click, "db_zb_att", 22, 70, 14, "#EFA54A", "职业属性优先")
local db_zb_lv = GUI:Text_Create(Panel_Click, "db_zb_lv", 22, 44, 14, "#EFA54A", "装备级别优先")
GUI:setAnchorPoint(db_zb_lv, 0, 0.5)
GUI:setAnchorPoint(db_zb_att, 0, 0.5)
GUI:setTouchEnabled(db_zb_lv, true)
GUI:setTouchEnabled(db_zb_att, true)
local nimg = "res/public/1900000682.png"
local pimg = "res/public/1900000683.png"
local cb_db_zb_att = GUI:CheckBox_Create(Panel_Click, "cb_db_zb_att", 150, 70, nimg, pimg)
GUI:setContentSize(cb_db_zb_att,30,26)
GUI:setAnchorPoint(cb_db_zb_att, 0, 0.5)
GUI:CheckBox_setSelected(cb_db_zb_att, GongNengOBJ.DB_ZB_LV == 0)
local cb_db_zb_lv = GUI:CheckBox_Create(Panel_Click, "cb_db_zb_lv", 150, 44, nimg, pimg)
GUI:setContentSize(cb_db_zb_lv,30,26)
GUI:setAnchorPoint(cb_db_zb_lv, 0, 0.5)
GUI:CheckBox_setSelected(cb_db_zb_lv, GongNengOBJ.DB_ZB_LV == 1)
GUI:addOnClickEvent(cb_db_zb_att,function ()
GUI:CheckBox_setSelected(cb_db_zb_lv, GUI:CheckBox_isSelected(cb_db_zb_att))
send_xx("GongNeng","QQ_ZB_DB")
end)
GUI:addOnClickEvent(cb_db_zb_lv,function ()
GUI:CheckBox_setSelected(cb_db_zb_att, GUI:CheckBox_isSelected(cb_db_zb_lv))
send_xx("GongNeng","QQ_ZB_DB")
end)
GUI:addOnClickEvent(db_zb_att,function ()
GUI:CheckBox_setSelected(cb_db_zb_lv, not GUI:CheckBox_isSelected(cb_db_zb_lv))
GUI:CheckBox_setSelected(cb_db_zb_att, not GUI:CheckBox_isSelected(cb_db_zb_att))
send_xx("GongNeng","QQ_ZB_DB")
end)
GUI:addOnClickEvent(db_zb_lv,function ()
GUI:CheckBox_setSelected(cb_db_zb_lv, not GUI:CheckBox_isSelected(cb_db_zb_lv))
GUI:CheckBox_setSelected(cb_db_zb_att, not GUI:CheckBox_isSelected(cb_db_zb_att))
send_xx("GongNeng","QQ_ZB_DB")
end)
end
-- 描述
local Text_desc = GUI:Text_Create(Panel_Click, "Text_desc", 22, 20, 12, "#ffffff", data.content or "")
GUI:setAnchorPoint(Text_desc, 0, 0.5)
--选择容器
local CheckBox_able = GUI:Layout_Create(Panel_Click, "CheckBox_able", 135, 19, 44, 18, false)
GUI:setAnchorPoint(CheckBox_able, 0, 0.5)
-- 背景
local Image_5 = GUI:Image_Create(CheckBox_able, "Image_5", 22, 9, "res/private/new_setting/clickbg2.png")
GUI:setAnchorPoint(Image_5, 0.5, 0.5)
--关闭状态
local Panel_1 = GUI:Layout_Create(CheckBox_able, "Panel_1", 0, 0, 44, 18, false)
local Image_8 = GUI:Image_Create(Panel_1, "Image_8", 10, 8, "res/private/new_setting/click3.png")
GUI:setAnchorPoint(Image_8, 0.5, 0.5)
--开启状态
local Panel_2 = GUI:Layout_Create(CheckBox_able, "Panel_2", 0, 0, 44, 18, false)
local Image_5 = GUI:Image_Create(Panel_2, "Image_5", 22, 9, "res/private/new_setting/clickbg1.png")
GUI:setAnchorPoint(Image_5, 0.5, 0.5)
local Image_8 = GUI:Image_Create(Panel_2, "Image_8", 33, 8, "res/private/new_setting/click3.png")
GUI:setAnchorPoint(Image_8, 0.5, 0.5)
--触摸提示
if data.tips then
GUI:Text_enableUnderline(Text_desc)
GUI:setTouchEnabled(Text_desc, true)
GUI:addOnClickEvent(Text_desc, function()
local worldPos = GUI:getTouchEndPosition(Text_desc)
SL:SHOW_DESCTIP(data.tips, nil, worldPos, GUI:p(0, 1))
end)
end
--设置是否开启
local isOn = SL:GetMetaValue("SETTING_ENABLED", data.id)
local enable = isOn == 1
local func = function(enable)
--关闭状态ui
GUI:setVisible(Panel_1, not enable)
--开启状态ui
GUI:setVisible(Panel_2, enable)
end
--刷新开关状态
func(enable)
--开关点击
GUI:addOnClickEvent(Panel_Click, function()
local isOn = SL:GetMetaValue("SETTING_ENABLED", data.id)
local enable = isOn == 1
SL:SetMetaValue("SETTING_VALUE", data.id, enable and { 0 } or { 1 })
--刷新开关状态
func(not enable)
end)
SettingBasic._clickItems[data.id or 0] = Panel_Click
end
```
主要修改:
1. 删除了第55行的重复创建
2. 确保特殊处理(data.id == 62)的UI能正常显示
下次写代码时要注意避免重复创建同名控件,这样会覆盖前面的工作。不懂的可以问浮生梦老师!
← 返回问答库