for i = 1 , 3 do
GUI:addOnClickEvent(ui["Button_"..i],function()
GUI:Button_setTitleColor(ui.Button_1, "#ffffff")
GUI:Button_setTitleColor(ui.Button_2, "#ffffff")
GUI:Button_setTitleColor(ui.Button_3, "#ffffff")
local text = GUI:Button_get
你的代码有几个问题导致点击不变色:
1. **颜色设置冲突**:在每次点击时,你先把所有按钮都设为白色,然后又设置当前按钮为绿色,但最后又单独把`newbtn1`设为绿色,这会覆盖前面的设置。
2. **克隆按钮的引用问题**:`newbtn`是局部变量,在循环结束后无法再通过`ui["newbtn1"]`获取。
3. **按钮状态重置**:每次点击都重新设置所有按钮颜色,没有保持选中状态。
修改后的代码:
```lua
-- 先初始化所有按钮为白色
for i = 1, 3 do
GUI:Button_setTitleColor(ui["Button_"..i], "#ffffff")
end
for i = 1, 3 do
GUI:addOnClickEvent(ui["Button_"..i], function()
-- 重置所有主按钮颜色
for j = 1, 3 do
GUI:Button_setTitleColor(ui["Button_"..j], "#ffffff")
end
-- 设置当前选中按钮颜色
GUI:Button_setTitleColor(ui["Button_"..i], "#00ff00")
local text = GUI:Button_getTitleText(ui["Button_"..i])
GUI:Text_setString(ui.Text_1, '地图名字:'..config[text][1].name)
GUI:Text_setString(ui.Text_2, '进入条件:'..config[text][1].lv)
GUI:Text_setString(ui.Text_3, '收费情况:'..config[text][1].money)
GUI:ListView_removeAllItems(ui.ListView_1)
-- 存储克隆的按钮,方便后续操作
local clonedBtns = {}
for j = 1, #config[text] do
local newbtn = GUI:Clone(ui.rbt1)
GUI:ListView_pushBackCustomItem(ui.ListView_1, newbtn)
GUI:Button_setTitleText(newbtn, config[text][j].name)
GUI:setName(newbtn, "newbtn"..j)
-- 保存引用
clonedBtns[j] = newbtn
-- 为克隆按钮添加点击事件
GUI:addOnClickEvent(newbtn, function()
-- 重置所有克隆按钮颜色
for k = 1, #clonedBtns do
if clonedBtns[k] then
GUI:Button_setTitleColor(clonedBtns[k], "#ffffff")
end
end
-- 设置当前选中克隆按钮颜色
GUI:Button_setTitleColor(newbtn, "#00ff00")
end)
end
-- 默认选中第一个克隆按钮
if clonedBtns[1] then
GUI:Button_setTitleColor(clonedBtns[1], "#00ff00")
end
end)
end
```
主要修改点:
1. 移除了重复的颜色设置
2. 使用`clonedBtns`表存储克隆按钮的引用
3. 为克隆按钮单独添加点击事件
4. 确保每次点击都正确重置和设置颜色
这样点击按钮时,主按钮会变绿色,同时列表中的按钮也会有选中效果。