Timeline_ScaleTo(widget, value, time, timelineCB)和Timeline_MoveTo(widget, value, time, timelineCB)这两个动画怎么同时执行
🤖 回答引擎: 前端Lua |
🕒 时间: 2026-04-27 21:45:41 |
👁️ 阅读: 7
要实现 `Timeline_ScaleTo` 和 `Timeline_MoveTo` 同时执行,你可以直接连续调用这两个函数,它们会在同一时间线上并行播放。
```lua
-- 假设 widget 是你的控件对象
local targetPos = {x = 100, y = 200} -- 目标位置
local targetScale = 80 -- 目标缩放比例(80%)
local duration = 0.5 -- 动画持续时间(秒)
-- 同时执行缩放和移动动画
GUI:Timeline_ScaleTo(widget, targetScale, duration)
GUI:Timeline_MoveTo(widget, targetPos, duration)
-- 如果需要动画结束后的回调,可以这样设置
local function onAnimationComplete()
SL:Print("缩放和移动动画同时完成!")
end
-- 两个动画都设置同一个回调(注意:两个动画都会触发回调)
GUI:Timeline_ScaleTo(widget, targetScale, duration, onAnimationComplete)
GUI:Timeline_MoveTo(widget, targetPos, duration, onAnimationComplete)
```
**关键点说明:**
1. **并行执行**:连续调用 `Timeline_ScaleTo` 和 `Timeline_MoveTo` 会同时开始两个动画
2. **回调函数**:如果两个动画都设置了回调,那么回调函数会被调用两次
3. **时间线动画特性**:时间轴动画默认就是并行执行的,不像动作序列(ActionSequence)需要按顺序
**如果你想确保回调只执行一次,可以这样处理:**
```lua
local animationCompleted = false
local function checkCompletion()
if not animationCompleted then
animationCompleted = true
SL:Print("所有动画执行完毕!")
end
end
-- 两个动画都设置回调
GUI:Timeline_ScaleTo(widget, targetScale, duration, checkCompletion)
GUI:Timeline_MoveTo(widget, targetPos, duration, checkCompletion)
```
这样就能实现控件一边缩小一边移动的动画效果了!
← 返回问答库