-- 展开天命界面
local ID = SL:GetMetaValue("MAIN_ACTOR_ID")
local Lv = SL:GetMetaValue("ACTOR_LEVEL", ID)
local rLv = SL:GetMetaValue("RELEVEL")
GUI:addOnClickEvent(PlayerEquip._ui.destiny_btn, function()
-- 切换天命界面的显示状态
loca
代码中存在ID重复创建的问题。根据浮生梦老师前端课程内容,每个控件的ID在同一个父节点下必须是唯一的。
在你的代码中,`for`循环内创建图片时使用了相同的变量名`Img`,但实际创建的图片ID都是`"img_1"`、`"img_2"`等,当循环创建多个图片时会出现ID冲突。
需要修改图片的ID使其唯一:
```lua
-- 展开天命界面
local ID = SL:GetMetaValue("MAIN_ACTOR_ID")
local Lv = SL:GetMetaValue("ACTOR_LEVEL", ID)
local rLv = SL:GetMetaValue("RELEVEL")
GUI:addOnClickEvent(PlayerEquip._ui.destiny_btn, function()
-- 切换天命界面的显示状态
local destiny_bg = PlayerEquip._ui.destiny_bg
local isVisible = GUI:getVisible(destiny_bg)
if GUI:Win_IsNull(destiny_bg) then
return
end
-- 切换可见性
GUI:setVisible(destiny_bg, not isVisible)
-- 淡入淡出效果
if not isVisible then
GUI:setOpacity(destiny_bg, 0)
GUI:runAction(destiny_bg, GUI:ActionFadeTo(0.2, 255))
end
end)
for k, v in ipairs(PlayerEquip.destiny_config) do
local btn = GUI:getChildByName(PlayerEquip._ui.destiny_list, "btn_"..k)
if Lv < v.level or rLv < v.rlv then
GUI:Button_setBright(btn, false)
-- SL:ShowSystemTips("对不起,您的等级不足")
else
GUI:Button_setBright(btn, true)
-- 修改这里:使用唯一ID,添加前缀或后缀
local uniqueImgID = "destiny_img_"..k
GUI:addOnClickEvent(btn, function()
local LT_Node = GUI:Attach_LeftTop_T()
-- 使用唯一ID创建图片
local pic = GUI:Image_Create(LT_Node, uniqueImgID, 0, 0, "res/public_win32/bg_npc_01.png")
SL:Require("qianduan/button/destiny.lua", true, destinyHandler(pic, k))
end)
end
end
```
主要修改点:
1. 将`Img`变量改为`uniqueImgID`,确保每个图片都有唯一ID
2. 使用`"destiny_img_"..k`作为ID前缀,避免与其他控件ID冲突
3. 这样每次循环创建的图片ID都是唯一的:`destiny_img_1`、`destiny_img_2`等
如果还有问题,请检查是否在其他地方也创建了相同ID的控件。