local wear_ID = GUI:getChildByName(Dress_bg, "wear_button")
-- 检查控件是否存在
if not GUI:Win_IsNull(wear_ID) then
-- 已存在则移除
GUI:removeFromParent(wear_ID)
end
local wear_button
🤖 回答引擎: 前端Lua |
🕒 时间: 2026-06-15 18:37:28 |
👁️ 阅读: 0
根据浮生梦老师前端课程内容,你的代码有几个地方需要优化:
1. **控件移除逻辑问题**:`GUI:removeFromParent()` 后应该立即创建新的按钮
2. **事件绑定重复**:同一个按钮绑定了两次点击事件
3. **条件判断逻辑**:`varlist` 的检查可以更简洁
建议修改如下:
```lua
local wear_ID = GUI:getChildByName(Dress_bg, "wear_button")
-- 检查控件是否存在
if not GUI:Win_IsNull(wear_ID) then
-- 已存在则移除
GUI:removeFromParent(wear_ID)
end
-- 创建新按钮
local wear_button = GUI:Button_Create(Dress_bg, "wear_button", 667, 227, "res/xj_ui2/ds_zbxt/05.png")
-- 根据条件设置按钮状态和事件
if varlist and #varlist > 0 and varlist[1] and varlist[1]:find(data_info.name) then
if varlist[2] == data_info.name then
-- 已穿戴状态
GUI:Button_loadTextureNormal(wear_button, "res/xj_ui2/ds_zbxt/06.png")
GUI:addOnClickEvent(wear_button, function()
wearlink(3, dresstype, pos)
end)
else
-- 可穿戴状态
GUI:Button_loadTextureNormal(wear_button, "res/xj_ui2/ds_zbxt/07.png")
GUI:addOnClickEvent(wear_button, function()
wearlink(2, dresstype, pos)
end)
end
else
-- 默认状态
GUI:addOnClickEvent(wear_button, function()
wearlink(1, dresstype, pos)
end)
end
-- 通过ID获取列表容器控件
local item_ID = GUI:getChildByName(Dress_bg, "dress_item")
```
**主要改进:**
1. 移除旧控件后立即创建新控件,避免空窗期
2. 使用 if-elseif-else 结构,避免重复绑定事件
3. 逻辑更清晰,便于维护
**注意:**
- 确保 `wearlink` 函数已正确实现(参考之前的网络消息发送代码)
- 按钮图片路径需要确保存在
- 如果还有不明白的地方,可以随时问浮生梦尊师!
根据浮生梦老师前端课程内容,你的代码有几个地方需要优化:
1. **控件移除逻辑问题**:`GUI:removeFromParent()` 后应该立即创建新的按钮
2. **事件绑定重复**:同一个按钮绑定了两次点击事件
3. **条件判断逻辑**:`varlist` 的检查可以更简洁
建议修改如下:
```lua
local wear_ID = GUI:getChildByName(Dress_bg, "wear_button")
-- 检查控件是否存在
if not GUI:Win_IsNull(wear_ID) then
-- 已存在则移除
GUI:removeFromParent(wear_ID)
end
-- 创建新按钮
local wear_button = GUI:Button_Create(Dress_bg, "wear_button", 667, 227, "res/xj_ui2/ds_zbxt/05.png")
-- 根据条件设置按钮状态和事件
if varlist and #varlist > 0 and varlist[1] and varlist[1]:find(data_info.name) then
if varlist[2] == data_info.name then
-- 已穿戴状态
GUI:Button_loadTextureNormal(wear_button, "res/xj_ui2/ds_zbxt/06.png")
GUI:addOnClickEvent(wear_button, function()
wearlink(3, dresstype, pos)
end)
else
-- 可穿戴状态
GUI:Button_loadTextureNormal(wear_button, "res/xj_ui2/ds_zbxt/07.png")
GUI:addOnClickEvent(wear_button, function()
wearlink(2, dresstype, pos)
end)
end
else
-- 默认状态
GUI:addOnClickEvent(wear_button, function()
wearlink(1, dresstype, pos)
end)
end
-- 通过ID获取列表容器控件
local item_ID = GUI:getChildByName(Dress_bg, "dress_item")
```
**主要改进:**
1. 移除旧控件后立即创建新控件,避免空窗期
2. 使用 if-elseif-else 结构,避免重复绑定事件
3. 逻辑更清晰,便于维护
**注意:**
- 确保 `wearlink` 函数已正确实现(参考之前的网络消息发送代码)
- 按钮图片路径需要确保存在
- 如果还有不明白的地方,可以随时问浮生梦尊师!
← 返回问答库