local MainLeftTop = {}
local UI_config = {
{name = "shijieditu", x = -720, y = -7, res = "res\\yidalu\\dingbuanniu/000000.png", cmd = {1234, 6001}},
{name = "gonglue", x = -320, y = -7, res = "res\\yidalu\\dingbuanniu/000008.png", cmd = {123
你的代码有几个关键问题需要修正:
## 问题分析:
1. **收起时按钮没有隐藏** - 你只是移动了位置,没有设置可见性
2. **收缩时向右加200** - 这是位置计算问题
## 修正后的 `collapseButtons` 函数:
```lua
-- 收起动画:将按钮移动到缩放按钮旁边(向右排列)
function MainLeftTop:collapseButtons(btnX, btnY)
local startX = btnX + 50 -- 从缩放按钮右侧开始
local yPos = btnY - 10 -- 稍微向下偏移
-- 需要收起的按钮列表(排除aaa、ssss、cccc)
local buttonsToCollapse = {}
for _, v in ipairs(UI_config) do
if v.name ~= "aaa" and v.name ~= "ssss" and v.name ~= "cccc" then
table.insert(buttonsToCollapse, v.name)
end
end
-- 为每个需要收起的按钮创建动画
for i, btnName in ipairs(buttonsToCollapse) do
local btn = buttonObjects[btnName]
if btn and not GUI:Win_IsNull(btn) then
-- 计算目标位置:在缩放按钮右侧排列
local targetX = startX + (i-1) * 60 -- 每个按钮间隔60像素
local targetY = yPos
-- 创建移动动画序列
local moveAction = GUI:ActionMoveTo(0.3, targetX, targetY)
local fadeAction = GUI:ActionFadeTo(0.3, 0) -- 淡出到透明
local hideAction = GUI:CallFunc(function()
GUI:setVisible(btn, false) -- 动画结束后隐藏
end)
-- 顺序执行:移动 → 淡出 → 隐藏
GUI:runAction(btn, GUI:ActionSequence(moveAction, fadeAction, hideAction))
end
end
-- 不需要收起的按钮保持原位置
local keepButtons = {"aaa", "ssss", "cccc"}
for _, btnName in ipairs(keepButtons) do
local btn = buttonObjects[btnName]
if btn and not GUI:Win_IsNull(btn) then
local originalPos = buttonOriginalPositions[btnName]
if originalPos then
local moveAction = GUI:ActionMoveTo(0.3, originalPos.x, originalPos.y)
GUI:runAction(btn, moveAction)
end
end
end
end
```
## 修正后的 `expandButtons` 函数:
```lua
-- 展开动画:将按钮移回原始位置
function MainLeftTop:expandButtons(btnX, btnY)
-- 所有按钮都回到原始位置
for k, v in ipairs(UI_config) do
local btn = buttonObjects[v.name]
if btn and not GUI:Win_IsNull(btn) then
local originalPos = buttonOriginalPositions[v.name]
if originalPos then
-- 先设置为可见和半透明
GUI:setVisible(btn, true)
GUI:setOpacity(btn, 0)
-- 创建动画序列
local fadeInAction = GUI:ActionFadeTo(0.2, 255) -- 淡入
local moveAction = GUI:ActionMoveTo(0.3, originalPos.x, originalPos.y)
-- 并行执行淡入和移动
GUI:runAction(btn, GUI:ActionSpawn(fadeInAction, moveAction))
end
end
end
end
```
## 关键修改点:
1. **添加淡出效果**:使用 `GUI:ActionFadeTo(0.3, 0)` 让按钮逐渐透明
2. **动画结束后隐藏**:使用 `GUI:CallFunc` 在动画完成后调用 `GUI:setVisible(btn, false)`
3. **展开时恢复可见性**:展开时先设置可见,再淡入显示
4. **使用 `ActionSequence`**:确保动作按顺序执行
## 关于"向右加200"的问题:
如果觉得收起位置太靠右,可以调整 `startX` 的值:
```lua
local startX = btnX - 100 -- 改为负值向左移动
```
这样修改后,收起时按钮会有淡出效果并最终隐藏,展开时会有淡入效果,视觉效果更流畅。