function ItemTips.main(data)
local parent = GUI:Attach_Parent()
ItemTips._data = data
ItemTips._panelListSubItems = {}
ItemTips.itemCount = 0
ItemTips._PList = nil
ItemTips._diff = false
ItemTips._equipAttList = {} -- 身上的装
🤖 回答引擎: 前端Lua |
🕒 时间: 2026-04-07 13:02:26 |
👁️ 阅读: 0
根据浮生梦老师前端课程内容,要在别处调用 `itemData.Name`,你需要在 `ItemTips.main` 函数中将 `itemData` 存储为模块的公共变量,然后提供一个获取函数。
以下是修改后的代码示例:
```lua
function ItemTips.main(data)
local parent = GUI:Attach_Parent()
ItemTips._data = data
ItemTips._panelListSubItems = {}
ItemTips.itemCount = 0
ItemTips._PList = nil
ItemTips._diff = false
ItemTips._equipAttList = {} -- 身上的装备属性
ItemTips._showTitleList = {}
ItemTips._typeCapture = data.typeCapture
-- 存储itemData到模块变量中
ItemTips._currentItemData = data.itemData or (data.typeId and SL:GetMetaValue("ITEM_DATA", data.typeId))
-- 是否是英雄装备
_IsHero = data.from and FormHero[data.from] or false
_lookPlayer = data.lookPlayer
_isSelf = data.from ~= nil and FromEquip[data.from]
topDesY = {}
rich_att_num = 0
desc_img_num = 0
local itemData = ItemTips._currentItemData -- 使用存储的变量
if SL:GetMetaValue("WINPLAYMODE") then
_TextSize = 13
end
-- ... 中间代码保持不变 ...
-- 道具类型
if IsEquip(itemData) then
ItemTips.GetEquipTips(data)
ItemTips.SetTradeCapturePanel(ItemTips._PList)
else
ItemTips.GetItemTips(data, itemData)
local chs = GUI:getChildren(ItemTips._PMainUI)
ItemTips.SetTradeCapturePanel(chs[1])
end
-- 注册监听Tips鼠标滚动
SL:RegisterLUAEvent(LUA_EVENT_ITEMTIPS_MOUSE_SCROLL, "ItemTips", ItemTips.OnMouseScroll)
end
-- 新增获取函数
function ItemTips.GetCurrentItemName()
if ItemTips._currentItemData and ItemTips._currentItemData.Name then
return ItemTips._currentItemData.Name
end
return ""
end
-- 或者直接获取整个itemData
function ItemTips.GetCurrentItemData()
return ItemTips._currentItemData
end
```
**使用方式:**
1. **在其他地方调用物品名称:**
```lua
local itemName = ItemTips.GetCurrentItemName()
SL:print("当前物品名称:" .. itemName)
```
2. **获取完整的物品数据:**
```lua
local itemData = ItemTips.GetCurrentItemData()
if itemData then
SL:print("物品ID:" .. itemData.typeId)
SL:print("物品名称:" .. itemData.Name)
-- 可以访问其他属性如 itemData.Desc, itemData.Quality 等
end
```
**注意事项:**
- 确保在调用 `ItemTips.GetCurrentItemName()` 之前已经调用了 `ItemTips.main()` 函数
- `itemData` 可能为 nil,所以调用前最好做空值判断
- 如果需要在多个界面间传递数据,建议使用 `SL:SetMetaValue()` 和 `SL:GetMetaValue()` 进行存储和读取
← 返回问答库