for k, v in ipairs(npc.config) do
local nowPage = math.floor((k-1) / 18) -- 当前页数
local pos = (k-1) % 18 -- 按钮位置
local col = pos % 2 -- 行位置
local row = mat
🤖 回答引擎: 前端Lua |
🕒 时间: 2026-03-10 12:00:14 |
👁️ 阅读: 12
要实现这个功能,你需要记录当前选中的按钮,并在点击新按钮时重置上一个按钮的颜色。以下是修改后的代码:
```lua
local selectedBtn = nil -- 记录当前选中的按钮
for k, v in ipairs(npc.config) do
local nowPage = math.floor((k-1) / 18) -- 当前页数
local pos = (k-1) % 18 -- 按钮位置
local col = pos % 2 -- 行位置
local row = math.floor(pos/2) -- 列位置
local ly_x = col * spacing_x + start_x -- 按钮x坐标
local ly_y = start_y - (row * spacing_y) -- 按钮y坐标
local btnName = "btn" .. k
local btn_Item = GUI:Button_Create(npc.ui.btn_Layout, btnName, ly_x, ly_y, "res/01/010006.png")
GUI:Button_loadTextureDisabled(btn_Item, "res/01/010005.png")
GUI:Button_setTitleText(btn_Item, v.name)
GUI:Button_setTitleFontSize(btn_Item, 16)
-- 设置按钮文字颜色为白色(初始状态)
GUI:Button_setTitleColor(btn_Item, "#ffffff")
GUI:addOnClickEvent(btn_Item, function()
-- 如果之前有选中的按钮,将其颜色改回白色
if selectedBtn and not GUI:Win_IsNull(selectedBtn) then
GUI:Button_setTitleColor(selectedBtn, "#ffffff")
end
-- 设置当前按钮为选中状态(绿色)
GUI:Button_setTitleColor(btn_Item, "#00ff00")
-- 更新选中的按钮记录
selectedBtn = btn_Item
end)
end
```
**代码说明:**
1. **`selectedBtn`变量**:用于记录当前被选中的按钮对象
2. **初始颜色设置**:在创建按钮时,使用`GUI:Button_setTitleColor(btn_Item, "#ffffff")`将所有按钮初始化为白色
3. **点击事件逻辑**:
- 点击按钮时,先检查`selectedBtn`是否存在且不为空
- 如果存在,使用`GUI:Button_setTitleColor(selectedBtn, "#ffffff")`将其颜色改回白色
- 然后将当前点击的按钮设置为绿色:`GUI:Button_setTitleColor(btn_Item, "#00ff00")`
- 最后更新`selectedBtn`为当前按钮
4. **空值判断**:使用`GUI:Win_IsNull()`检查按钮是否有效,避免操作已销毁的控件
这样每次点击按钮时,都会将之前选中的按钮恢复为白色,并将当前点击的按钮设置为绿色,实现单选效果。
要实现这个功能,你需要记录当前选中的按钮,并在点击新按钮时重置上一个按钮的颜色。以下是修改后的代码:
```lua
local selectedBtn = nil -- 记录当前选中的按钮
for k, v in ipairs(npc.config) do
local nowPage = math.floor((k-1) / 18) -- 当前页数
local pos = (k-1) % 18 -- 按钮位置
local col = pos % 2 -- 行位置
local row = math.floor(pos/2) -- 列位置
local ly_x = col * spacing_x + start_x -- 按钮x坐标
local ly_y = start_y - (row * spacing_y) -- 按钮y坐标
local btnName = "btn" .. k
local btn_Item = GUI:Button_Create(npc.ui.btn_Layout, btnName, ly_x, ly_y, "res/01/010006.png")
GUI:Button_loadTextureDisabled(btn_Item, "res/01/010005.png")
GUI:Button_setTitleText(btn_Item, v.name)
GUI:Button_setTitleFontSize(btn_Item, 16)
-- 设置按钮文字颜色为白色(初始状态)
GUI:Button_setTitleColor(btn_Item, "#ffffff")
GUI:addOnClickEvent(btn_Item, function()
-- 如果之前有选中的按钮,将其颜色改回白色
if selectedBtn and not GUI:Win_IsNull(selectedBtn) then
GUI:Button_setTitleColor(selectedBtn, "#ffffff")
end
-- 设置当前按钮为选中状态(绿色)
GUI:Button_setTitleColor(btn_Item, "#00ff00")
-- 更新选中的按钮记录
selectedBtn = btn_Item
end)
end
```
**代码说明:**
1. **`selectedBtn`变量**:用于记录当前被选中的按钮对象
2. **初始颜色设置**:在创建按钮时,使用`GUI:Button_setTitleColor(btn_Item, "#ffffff")`将所有按钮初始化为白色
3. **点击事件逻辑**:
- 点击按钮时,先检查`selectedBtn`是否存在且不为空
- 如果存在,使用`GUI:Button_setTitleColor(selectedBtn, "#ffffff")`将其颜色改回白色
- 然后将当前点击的按钮设置为绿色:`GUI:Button_setTitleColor(btn_Item, "#00ff00")`
- 最后更新`selectedBtn`为当前按钮
4. **空值判断**:使用`GUI:Win_IsNull()`检查按钮是否有效,避免操作已销毁的控件
这样每次点击按钮时,都会将之前选中的按钮恢复为白色,并将当前点击的按钮设置为绿色,实现单选效果。
← 返回问答库