local screenWidth = SL:GetMetaValue("SCREEN_WIDTH", 0)
local screenHeight = SL:GetMetaValue("SCREEN_HEIGHT", 0)
local parent = GUI:Win_Create("zhuanpan", 0, 0, screenWidth, screenHeight, false, false, true, false, false, false, 1)
local b
🤖 回答引擎: 前端Lua |
🕒 时间: 2026-05-02 14:48:05 |
👁️ 阅读: 3
要在序列帧结束后播放另一个序列帧,可以使用 `GUI:ActionSequence` 配合 `GUI:CallFunc` 回调函数来实现。以下是完整的代码示例:
```lua
local screenWidth = SL:GetMetaValue("SCREEN_WIDTH", 0)
local screenHeight = SL:GetMetaValue("SCREEN_HEIGHT", 0)
local parent = GUI:Win_Create("zhuanpan", 0, 0, screenWidth, screenHeight, false, false, true, false, false, false, 1)
local bg = GUI:Image_Create(parent, 'bg', 0, 0, 'res/yuding/tianshudonghua/1.png')
GUI:setContentSize(bg, screenWidth, screenHeight)
GUI:setAnchorPoint(bg, 0.5, 0.5)
GUI:setPosition(bg, screenWidth/2, screenHeight/2)
-- 创建第一个序列帧
local fullScreenAnim = GUI:Frames_Create(
parent,
"FullScreenFrames",
screenWidth/2,
screenHeight/2,
"res/yuding/tianshudonghua/fanshuzhen/a",
".png",
1,
35,
{speed = 100, count = 35, loop = 1}
)
GUI:setAnchorPoint(fullScreenAnim, 0.5, 0.5)
GUI:setContentSize(fullScreenAnim, screenWidth, screenHeight)
GUI:setIgnoreContentAdaptWithSize(fullScreenAnim, false)
-- 创建第二个序列帧(先隐藏)
local secondAnim = GUI:Frames_Create(
parent,
"SecondFrames",
screenWidth/2,
screenHeight/2,
"res/yuding/tianshudonghua/你的第二个序列帧前缀",
".png",
1,
30,
{speed = 80, count = 30, loop = 1}
)
GUI:setAnchorPoint(secondAnim, 0.5, 0.5)
GUI:setContentSize(secondAnim, screenWidth, screenHeight)
GUI:setIgnoreContentAdaptWithSize(secondAnim, false)
GUI:setVisible(secondAnim, false) -- 初始隐藏
-- 定义播放第二个序列帧的函数
local function playSecondAnimation()
-- 隐藏第一个序列帧
GUI:setVisible(fullScreenAnim, false)
-- 显示并播放第二个序列帧
GUI:setVisible(secondAnim, true)
-- 这里可以添加其他逻辑,比如播放音效等
SL:print("开始播放第二个序列帧")
end
-- 计算第一个序列帧的总时长(帧数 * 每帧时间)
local firstAnimDuration = 35 * (100 / 1000) -- 35帧 * 100毫秒/帧,转换为秒
-- 使用动作序列:等待第一个动画播放完毕,然后执行回调
local sequenceAction = GUI:ActionSequence(
GUI:DelayTime(firstAnimDuration), -- 等待第一个动画播放完成
GUI:CallFunc(playSecondAnimation) -- 执行回调播放第二个动画
)
-- 运行动作
GUI:runAction(fullScreenAnim, sequenceAction)
```
**代码说明:**
1. **创建两个序列帧**:先创建第一个序列帧(fullScreenAnim),再创建第二个序列帧(secondAnim),第二个初始设置为隐藏。
2. **计算动画时长**:第一个序列帧有35帧,每帧100毫秒,总时长为3.5秒(35 * 0.1秒)。
3. **使用`GUI:ActionSequence`**:创建一个动作序列,包含:
- `GUI:DelayTime(duration)`:等待指定时间(第一个动画的播放时间)
- `GUI:CallFunc(callback)`:延迟结束后执行回调函数
4. **回调函数逻辑**:
- 隐藏第一个序列帧
- 显示第二个序列帧
- 可以添加其他需要的逻辑
5. **运行动作**:将动作序列应用到第一个序列帧对象上。
**注意事项:**
- 确保第二个序列帧的资源路径正确
- 可以根据需要调整第二个序列帧的参数(帧数、速度等)
- 如果需要在动画播放过程中有更精细的控制,可以考虑使用定时器或帧事件回调
这样就能实现第一个序列帧播放完毕后自动播放第二个序列帧的效果了!
← 返回问答库