有10个按钮 把 GUI:runAction(beimian, GUI:ActionSequence(
GUI:ActionSpawn(
GUI:ActionMoveTo(0.3, cardPositions[i].x, cardPositions[i].y),
GUI:ActionRotateBy(0.3, 360) 改成 依次行动 第一个结束后 再移动第二个
🤖 回答引擎: 前端Lua |
🕒 时间: 2026-04-20 15:40:15 |
👁️ 阅读: 10
要让10个按钮依次执行移动和旋转动画,可以使用`GUI:ActionSequence`配合`GUI:CallFunc`来实现延时触发。以下是修改后的代码:
```lua
-- 假设有10个按钮存储在buttons表中
local buttons = {button1, button2, button3, button4, button5, button6, button7, button8, button9, button10}
local cardPositions = {
{x = 100, y = 100},
{x = 200, y = 100},
-- ... 其他8个位置
}
-- 创建一个函数来依次执行动画
local function playSequentialAnimations(index)
if index > #buttons then
return -- 所有按钮都执行完毕
end
local button = buttons[index]
if GUI:Win_IsNull(button) then
playSequentialAnimations(index + 1)
return
end
-- 执行当前按钮的动画
GUI:runAction(button, GUI:ActionSequence(
GUI:ActionSpawn(
GUI:ActionMoveTo(0.3, cardPositions[index].x, cardPositions[index].y),
GUI:ActionRotateBy(0.3, 360)
),
GUI:CallFunc(function()
-- 当前按钮动画完成后,触发下一个按钮
playSequentialAnimations(index + 1)
end)
))
end
-- 开始执行第一个按钮的动画
playSequentialAnimations(1)
```
**代码说明:**
1. **递归函数设计**:`playSequentialAnimations`函数通过递归调用实现依次执行
2. **动画序列**:每个按钮执行`ActionSpawn`(同时移动和旋转),完成后通过`CallFunc`触发下一个
3. **空值检查**:使用`GUI:Win_IsNull()`确保控件有效
4. **时间控制**:每个按钮动画持续0.3秒,下一个按钮在前一个完成后立即开始
**如果你想让每个按钮之间有固定延迟**,可以这样修改:
```lua
-- 在CallFunc中增加延迟
GUI:CallFunc(function()
SL:ScheduleOnce(function()
playSequentialAnimations(index + 1)
end, 0.1) -- 延迟0.1秒再执行下一个
end)
```
这样就能实现10个按钮依次执行飞卡动画的效果,第一个完成后第二个才开始,依次类推。
← 返回问答库