for i = 1 ,#config["初级地图"] do
local newbtn = GUI:Clone(ui.rbt1)
GUI:ListView_pushBackCustomItem(ui.ListView_1, newbtn)
GUI:Button_setTitleText(newbtn, config["初级地图"][i].name)
GUI:addOnClickEvent(newbtn,function()
GUI:Te
🤖 回答引擎: 前端Lua |
🕒 时间: 2026-05-24 11:34:31 |
👁️ 阅读: 2
在循环中创建克隆按钮时,需要为每个按钮设置独立的标识或保存对应的数据索引。以下是修改后的代码:
```lua
for i = 1, #config["初级地图"] do
local newbtn = GUI:Clone(ui.rbt1)
GUI:ListView_pushBackCustomItem(ui.ListView_1, newbtn)
GUI:Button_setTitleText(newbtn, config["初级地图"][i].name)
-- 为按钮设置唯一名称,包含索引信息
GUI:setName(newbtn, "map_btn_" .. i)
-- 在闭包中捕获当前索引值
local mapIndex = i
GUI:addOnClickEvent(newbtn, function()
-- 使用捕获的索引访问配置数据
GUI:Text_setString(ui.Text_1, '地图名字:' .. config["初级地图"][mapIndex].name)
GUI:Text_setString(ui.Text_2, '进入条件:' .. config["初级地图"][mapIndex].lv .. '级进入')
GUI:Text_setString(ui.Text_3, '收费情况:' .. config["初级地图"][mapIndex].money .. '金币')
end)
end
```
**关键点说明:**
1. **闭包捕获变量**:Lua的闭包会捕获外部变量,在循环中直接使用`i`会导致所有按钮都引用最后一个索引值。通过`local mapIndex = i`创建局部变量,每个按钮的点击事件都会捕获自己对应的索引。
2. **设置唯一标识**:使用`GUI:setName(newbtn, "map_btn_" .. i)`为每个按钮设置唯一名称,后续可以通过这个名称识别具体是哪个按钮被点击。
3. **数据访问**:在点击事件中,使用捕获的`mapIndex`变量访问对应的配置数据,确保点击哪个按钮就显示哪个地图的信息。
这样就能准确知道用户点击了哪个克隆按钮,并显示对应的地图信息。
在循环中创建克隆按钮时,需要为每个按钮设置独立的标识或保存对应的数据索引。以下是修改后的代码:
```lua
for i = 1, #config["初级地图"] do
local newbtn = GUI:Clone(ui.rbt1)
GUI:ListView_pushBackCustomItem(ui.ListView_1, newbtn)
GUI:Button_setTitleText(newbtn, config["初级地图"][i].name)
-- 为按钮设置唯一名称,包含索引信息
GUI:setName(newbtn, "map_btn_" .. i)
-- 在闭包中捕获当前索引值
local mapIndex = i
GUI:addOnClickEvent(newbtn, function()
-- 使用捕获的索引访问配置数据
GUI:Text_setString(ui.Text_1, '地图名字:' .. config["初级地图"][mapIndex].name)
GUI:Text_setString(ui.Text_2, '进入条件:' .. config["初级地图"][mapIndex].lv .. '级进入')
GUI:Text_setString(ui.Text_3, '收费情况:' .. config["初级地图"][mapIndex].money .. '金币')
end)
end
```
**关键点说明:**
1. **闭包捕获变量**:Lua的闭包会捕获外部变量,在循环中直接使用`i`会导致所有按钮都引用最后一个索引值。通过`local mapIndex = i`创建局部变量,每个按钮的点击事件都会捕获自己对应的索引。
2. **设置唯一标识**:使用`GUI:setName(newbtn, "map_btn_" .. i)`为每个按钮设置唯一名称,后续可以通过这个名称识别具体是哪个按钮被点击。
3. **数据访问**:在点击事件中,使用捕获的`mapIndex`变量访问对应的配置数据,确保点击哪个按钮就显示哪个地图的信息。
这样就能准确知道用户点击了哪个克隆按钮,并显示对应的地图信息。
← 返回问答库