local function shouqi(msgID, msgData)
local parent = GUI:Attach_RightTop()
local ui = GUI:ui_delegate(parent)
for i = 1 , 10 do
GUI:setOpacity(ui['bt_'..i], 255)
local fadeOutAction = GUI:Acti
```lua
local function shouqi(msgID, msgData)
-- 获取挂接节点
local parent = GUI:Attach_RightTop()
local ui = GUI:ui_delegate(parent)
-- 先获取bt_11的坐标作为目标位置
local targetWidget = ui['bt_11']
if not GUI:Win_IsNull(targetWidget) then
local targetPos = GUI:getPosition(targetWidget)
for i = 1, 10 do
local widget = ui['bt_'..i]
if not GUI:Win_IsNull(widget) then
-- 设置初始状态
GUI:setOpacity(widget, 255)
GUI:setVisible(widget, true)
-- 获取当前坐标
local currentPos = GUI:getPosition(widget)
-- 创建组合动作:淡化 + 缩小 + 移动
local fadeAction = GUI:ActionFadeTo(0.5, 0)
local scaleAction = GUI:ActionScaleTo(0.5, 0.1)
local moveAction = GUI:ActionMoveTo(0.5, targetPos.x, targetPos.y)
-- 隐藏回调
local hideFunc = GUI:CallFunc(function()
GUI:setVisible(widget, false)
end)
-- 同时执行淡化、缩小和移动,然后隐藏
GUI:runAction(widget,
GUI:ActionSequence(
GUI:ActionSpawn(fadeAction, scaleAction, moveAction),
hideFunc
)
)
end
end
end
end
SL:RegisterNetMsg(1000, shouqi)
```
这段代码做了以下优化:
1. **获取目标坐标**:先获取bt_11的坐标作为所有组件移动的目标位置
2. **组合动作**:使用`GUI:ActionSpawn`让淡化、缩小和移动同时执行
3. **动作顺序**:先同时执行三个动作,然后执行隐藏回调
4. **安全判断**:使用`GUI:Win_IsNull()`判断组件是否存在
5. **初始状态**:确保组件在开始前可见且不透明
注意:`GUI:ActionSpawn`函数允许同时执行多个动作,这样组件会一边淡化、一边缩小、一边移动,效果更流畅。