function MainRightTop.main()
local isOnPC = SL:GetMetaValue("CURRENT_OPERMODE")
if isOnPC == 1 then
local parent = GUI:Attach_RightTop()
local buttonLayout = GUI:Layout_Create(parent, "buttonLayout", -630, -265, 445, 235, true)
local topIcon
🤖 回答引擎: 前端Lua |
🕒 时间: 2026-04-18 16:22:59 |
👁️ 阅读: 12
看到你的代码,问题出在收起按钮点击事件的处理逻辑上。
当点击收起按钮时,代码执行了 `GUI:removeAllChildren(topIcons)` 来移除所有子控件,然后重新调用 `MainRightTop.initIconData(topIcons)` 来初始化图标。
但是,在 `GUI:setVisible(topIcons, true)` 之后,你立即执行了 `GUI:Timeline_MoveTo(topIcons, { x = 0, y = 0 }, 0.2, ...)` 动画。问题在于:
1. **动画与UI创建冲突**:`Timeline_MoveTo` 动画在移动控件时,可能正在创建新的图标子控件,这会导致UI渲染异常
2. **时机问题**:应该在图标完全创建完成后再执行动画
**建议修改方案**:
```lua
GUI:addOnClickEvent(Button, function()
if GUI:getVisible(topIcons) == true then
GUI:Timeline_MoveTo(topIcons, { x = 445, y = 0 }, 0.2, function()
GUI:setVisible(topIcons, false)
GUI:Button_loadTextureNormal(Button, "res/custom/top/01.png")
end)
else
GUI:setVisible(topIcons, true)
GUI:removeAllChildren(topIcons)
-- 重新判断图标数据
MainRightTop.judgeIcon()
-- 重新初始化图标
MainRightTop.initIconData(topIcons)
-- 延迟执行移动动画,确保图标创建完成
SL:ScheduleOnce(function()
GUI:Timeline_MoveTo(topIcons, { x = 0, y = 0 }, 0.2, function()
GUI:Button_loadTextureNormal(Button, "res/custom/top/01.png")
end)
end, 0.1) -- 延迟0.1秒
end
end)
```
这样修改后,图标创建完成后再执行动画,就不会出现图标消失的问题了。
看到你的代码,问题出在收起按钮点击事件的处理逻辑上。
当点击收起按钮时,代码执行了 `GUI:removeAllChildren(topIcons)` 来移除所有子控件,然后重新调用 `MainRightTop.initIconData(topIcons)` 来初始化图标。
但是,在 `GUI:setVisible(topIcons, true)` 之后,你立即执行了 `GUI:Timeline_MoveTo(topIcons, { x = 0, y = 0 }, 0.2, ...)` 动画。问题在于:
1. **动画与UI创建冲突**:`Timeline_MoveTo` 动画在移动控件时,可能正在创建新的图标子控件,这会导致UI渲染异常
2. **时机问题**:应该在图标完全创建完成后再执行动画
**建议修改方案**:
```lua
GUI:addOnClickEvent(Button, function()
if GUI:getVisible(topIcons) == true then
GUI:Timeline_MoveTo(topIcons, { x = 445, y = 0 }, 0.2, function()
GUI:setVisible(topIcons, false)
GUI:Button_loadTextureNormal(Button, "res/custom/top/01.png")
end)
else
GUI:setVisible(topIcons, true)
GUI:removeAllChildren(topIcons)
-- 重新判断图标数据
MainRightTop.judgeIcon()
-- 重新初始化图标
MainRightTop.initIconData(topIcons)
-- 延迟执行移动动画,确保图标创建完成
SL:ScheduleOnce(function()
GUI:Timeline_MoveTo(topIcons, { x = 0, y = 0 }, 0.2, function()
GUI:Button_loadTextureNormal(Button, "res/custom/top/01.png")
end)
end, 0.1) -- 延迟0.1秒
end
end)
```
这样修改后,图标创建完成后再执行动画,就不会出现图标消失的问题了。
← 返回问答库