根据浮生梦老师前端课程内容,你需要将B文件(MainRightTop)中的图标布局逻辑与A文件(MainMiniMap)的小地图展开/收起动画进行联动。主要修改点在于:
1. **坐标同步**:当小地图展开/收起时,MainRightTop的图标布局需要跟随移动
2. **状态判断**:根据`MainMiniMap._showState`的状态调整图标位置
具体修改如下:
**在MainRightTop.lua中添加:**
```lua
-- 新增函数:根据小地图状态调整图标位置
function MainRightTop.AdjustByMiniMapState()
if not MainMiniMap or not MainMiniMap._showState then
return
end
local isOnPC = SL:GetMetaValue("CURRENT_OPERMODE")
local buttonLayout = GUI:getChildByName(GUI:Attach_RightTop(), "buttonLayout")
local Button = GUI:getChildByName(GUI:Attach_RightTop(), "Button")
if GUI:Win_IsNull(buttonLayout) or GUI:Win_IsNull(Button) then
return
end
if MainMiniMap._showState then
-- 小地图展开时的位置
if isOnPC == 1 then
GUI:Timeline_MoveTo(buttonLayout, { x = -475, y = -265 }, 0.2)
GUI:Timeline_MoveTo(Button, { x = -30, y = -140 }, 0.2)
else
GUI:Timeline_MoveTo(buttonLayout, { x = -665, y = -265 }, 0.2)
GUI:Timeline_MoveTo(Button, { x = -220, y = -140 }, 0.2)
end
else
-- 小地图收起时的位置
if isOnPC == 1 then
GUI:Timeline_MoveTo(buttonLayout, { x = -630, y = -265 }, 0.2)
GUI:Timeline_MoveTo(Button, { x = -185, y = -140 }, 0.2)
else
GUI:Timeline_MoveTo(buttonLayout, { x = -665, y = -265 }, 0.2)
GUI:Timeline_MoveTo(Button, { x = -220, y = -140 }, 0.2)
end
end
end
-- 注册小地图状态变化事件
SL:RegisterLUAEvent("LUA_EVENT_PCMINIMAP_STATUS_CHANGE", "MainRightTop", MainRightTop.AdjustByMiniMapState)
```
**在MainMiniMap.lua的ChangeShowState函数末尾添加:**
```lua
function MainMiniMap.ChangeShowState(state)
if MainMiniMap._showState == state then
return nil
end
MainMiniMap._showState = state
-- ... 原有代码 ...
-- 新增:通知MainRightTop调整位置
if MainRightTop and MainRightTop.AdjustByMiniMapState then
MainRightTop.AdjustByMiniMapState()
end
end
```
**修改MainRightTop.main函数中的坐标初始化:**
```lua
function MainRightTop.main()
local isOnPC = SL:GetMetaValue("CURRENT_OPERMODE")
local parent = GUI:Attach_RightTop()
-- 根据小地图初始状态设置坐标
local miniMapState = MainMiniMap and MainMiniMap._showState or false
if isOnPC == 1 then
local layoutX = miniMapState and -475 or -630
local buttonX = miniMapState and -30 or -185
buttonLayout = GUI:Layout_Create(parent, "buttonLayout", layoutX, -265, 445, 235, true)
Button = GUI:Button_Create(parent, "Button", buttonX, -140, "res/custom/top/01.png")
else
local layoutX = -665 -- 手机模式固定
local buttonX = -220 -- 手机模式固定
buttonLayout = GUI:Layout_Create(parent, "buttonLayout", layoutX, -265, 445, 235, true)
Button = GUI:Button_Create(parent, "Button", buttonX, -140, "res/custom/top/01.png")
end
-- ... 其余代码保持不变 ...
end
```
这样修改后,当小地图展开/收起时,右上角的图标布局会自动调整位置,保持界面协调。注意PC模式和手机模式的处理逻辑不同,手机模式下位置是固定的。