local page = 1
GUI:addOnClickEvent(npc.ui.lastPage,function()
if page <= 1 then
return
else
page = page - 1
GUI:Text_setString(npc.ui.nowPage, page)
end
end)
GUI:addOnClickEven
🤖 回答引擎: 前端Lua |
🕒 时间: 2026-06-14 01:38:58 |
👁️ 阅读: 8
你的代码存在几个问题,我帮你分析一下:
## 主要问题:
1. **循环位置错误**:你的`for`循环应该放在翻页事件中,而不是页面初始化时。现在这样会导致所有页面的内容一次性创建。
2. **ID重复问题**:在循环中创建的控件使用了相同的ID(都是`_1`结尾),这会导致控件被覆盖。
3. **缺少翻页刷新逻辑**:点击翻页按钮后,没有更新显示的内容。
## 修正后的代码:
```lua
local page = 1
local maxPage = 10
-- 创建页面内容函数
local function createPageContent(pageNum)
-- 先清除旧内容(如果有的话)
-- 这里需要根据你的实际情况清理旧控件
for k, v in ipairs(npc.equip) do
for m, n in ipairs(v) do
local xPanel = 52
local ypanel = 406 - (m - 1) * 35
-- 使用当前页码创建唯一ID
local layOut = "panel" .. k .. "_" .. pageNum
local text_map = "map" .. k .. "_" .. pageNum .. "_" .. m
local text_item = "item" .. k .. "_" .. pageNum .. "_" .. m
local text_reward = "reward" .. k .. "_" .. pageNum .. "_" .. m
local text_status = "status" .. k .. "_" .. pageNum .. "_" .. m
local layOut_panel = GUI:Layout_Create(npc.ui.bg, layOut, xPanel, ypanel, 730, 30, false)
GUI:Text_Create(layOut_panel, text_map, 65, 0, 18, "#00ff00", "暂未爆出")
GUI:Text_Create(layOut_panel, text_item, 256, 0, 18, "#00ffe8", n.name)
GUI:Text_Create(layOut_panel, text_reward, 447, 0, 18, "#ffff00", n.reward)
GUI:Text_Create(layOut_panel, text_status, 638, 0, 18, "#00ff00", "未获取")
end
end
end
-- 初始化第一页
createPageContent(1)
-- 上一页按钮
GUI:addOnClickEvent(npc.ui.lastPage, function()
if page <= 1 then
return
else
page = page - 1
GUI:Text_setString(npc.ui.nowPage, page)
createPageContent(page) -- 创建新页面的内容
end
end)
-- 下一页按钮
GUI:addOnClickEvent(npc.ui.nextPage, function()
if page >= maxPage then
return
else
page = page + 1
GUI:Text_setString(npc.ui.nowPage, page)
createPageContent(page) -- 创建新页面的内容
end
end)
```
## 改进建议:
1. **添加清理函数**:在创建新页面内容前,需要清理旧页面的控件
2. **使用分页数据**:建议将数据按页码分组,而不是每次都遍历所有数据
3. **添加页面切换动画**:可以使用`GUI:ActionFadeTo()`等动作函数
这样修改后,每次翻页都会重新创建对应页码的内容,避免了控件重复和显示混乱的问题。
← 返回问答库