function npc.main()
-- npc.jj_data = longmaishuju
local parent = GUI:Win_Create(npc.__cname, 0, 0, 0, 0, false, false, true, true, true, 0)
GUI:LoadExport(parent, "UI/XingShiHuFuUI")
npc._parent = parent
npc.ui = {}
npc.ui = G
🤖 回答引擎: 前端Lua |
🕒 时间: 2026-05-29 20:30:12 |
👁️ 阅读: 2
看了你的代码,我发现了几个问题需要解决。根据浮生梦老师的前端课程内容,我来帮你实现这个功能:
```lua
function npc.main()
-- 创建父节点
local parent = GUI:Win_Create(npc.__cname, 0, 0, 0, 0, false, false, true, true, true, 0)
GUI:LoadExport(parent, "UI/XingShiHuFuUI")
npc._parent = parent
npc.ui = GUI:ui_delegate(parent)
-- 设置背景位置
ssrSetWidgetPosition(parent, npc.ui.Image_1, 2, 0, 0, true, true)
-- 关闭按钮
GUI:addOnClickEvent(npc.ui.close, function()
npc.Close()
end)
-- 存储当前显示的克隆组件
npc.currentClonedPanel = nil
npc.currentButtonIndex = 0
-- 获取ListView中的按钮并添加点击事件
local listView = npc.ui.ListView_1
local items = GUI:ListView_getItems(listView)
for k, child in ipairs(items) do
-- 为每个按钮添加点击事件
GUI:addOnClickEvent(child, function()
-- 如果之前有克隆的组件,先移除
if npc.currentClonedPanel and not GUI:Win_IsNull(npc.currentClonedPanel) then
GUI:removeFromParent(npc.currentClonedPanel)
npc.currentClonedPanel = nil
end
-- 克隆新的Panel
local newPanel = GUI:Clone(npc.ui.Panel_1)
GUI:setVisible(newPanel, true)
-- 插入到当前按钮后面
local insertIndex = k + 1
GUI:ListView_insertCustomItem(listView, newPanel, insertIndex)
-- 存储当前克隆的组件和按钮索引
npc.currentClonedPanel = newPanel
npc.currentButtonIndex = k
SL:print("按钮" .. k .. "被点击,克隆组件已插入到位置" .. insertIndex)
end)
end
-- 入场动画
Action_slow_appear(npc._parent, 200, 3, 1)
end
```
**关键点说明:**
1. **存储状态**:我添加了`npc.currentClonedPanel`和`npc.currentButtonIndex`来记录当前显示的克隆组件和对应的按钮索引
2. **点击事件处理**:
- 点击按钮时,先检查是否有已存在的克隆组件
- 使用`GUI:removeFromParent()`移除之前的组件
- 克隆新的Panel并插入到对应位置
3. **插入位置**:使用`GUI:ListView_insertCustomItem(listView, newPanel, k + 1)`将克隆的组件插入到当前按钮的后面
4. **组件可见性**:克隆后记得设置`GUI:setVisible(newPanel, true)`,因为模板可能默认是隐藏的
**注意事项:**
- 确保`npc.ui.Panel_1`在UI文件中存在且是隐藏状态(作为模板)
- 每次点击都会先清理旧的克隆组件,避免内存泄漏
- 使用`GUI:Win_IsNull()`检查组件是否有效
这样实现后,点击第一个按钮会在第一个后面显示克隆组件,点击第二个按钮时,第一个的克隆组件会被删除,第二个的克隆组件会显示在第二个按钮后面,以此类推。
← 返回问答库