-print] [18:59:57-136] [GUI LOG] GUI:Win_Open,2 load cost(milliseconds) item/ItemTips 15.999999999622 true
[LUA-print] [18:59:59-807]
*********************************
SOCIAL_IS_BLICKLIST_BY_UID was deprecated please use SOCIAL_IS_BLACKLIST_BY_UID i
🤖 回答引擎: 前端Lua |
🕒 时间: 2026-04-29 19:01:03 |
👁️ 阅读: 13
从日志来看,你的代码有几个关键错误:
1. **重复创建相同ID的控件**:错误日志显示`GUI:ItemShow_Create ID is exists`,说明你在同一界面中多次创建了相同ID的ItemShow控件。
2. **对nil值进行操作**:后续的`target is nil value`错误是因为你尝试对不存在的控件(nil)调用`setAnchorPoint`和`setTag`函数。
3. **使用了已废弃的变量名**:日志中多次提示`WINPLAYMODE`已废弃,应该使用`IS_PC_OPER_MODE`。
## 解决方案:
```lua
-- 1. 检查控件是否已存在,避免重复创建
local itemShowID = "my_item_show"
local itemShow = GUI:getChildByName(parent, itemShowID)
if GUI:Win_IsNull(itemShow) then
-- 控件不存在时才创建
itemShow = GUI:ItemShow_Create(parent, itemShowID, 0, 0, 100, 100, itemID)
-- 2. 创建成功后再设置属性
if not GUI:Win_IsNull(itemShow) then
GUI:setAnchorPoint(itemShow, 0.5, 0.5)
GUI:setTag(itemShow, 1)
end
end
-- 3. 更新已废弃的变量使用
-- 错误用法:
-- local isWinMode = SL:GetMetaValue("WINPLAYMODE")
-- 正确用法:
local isPC = SL:GetMetaValue("IS_PC_OPER_MODE")
```
## 具体错误位置分析:
从堆栈信息看,错误发生在`JingYanShangHang.lua`的第13行,在`Bag = {}...`的第178行调用。你需要检查:
- 第385行:`GUI:ItemShow_Create`调用
- 第386行:`setAnchorPoint`调用
- 第387行:`setTag`调用
这些行应该添加nil值检查,确保控件创建成功后再进行后续操作。
**下次写代码时要注意,创建控件前先检查是否已存在,创建后要检查是否成功!** 不懂的可以问浮生梦尊师!
← 返回问答库