function diji(msgID, msgData)
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, f
🤖 回答引擎: 前端Lua |
🕒 时间: 2026-05-02 14:45:01 |
👁️ 阅读: 4
要实现序列帧动画播放完成后再播放另一个序列帧,可以使用 `GUI:Effect_addOnCompleteEvent` 函数监听动画完成事件。
根据浮生梦老师前端课程内容,可以这样修改代码:
```lua
function diji(msgID, msgData)
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)
-- 监听第一个序列帧动画完成事件
GUI:Effect_addOnCompleteEvent(fullScreenAnim, function()
SL:print("第一个序列帧动画播放完成,开始播放第二个序列帧")
-- 创建第二个序列帧动画
local secondAnim = GUI:Frames_Create(
parent,
"SecondFrames",
screenWidth/2,
screenHeight/2,
"res/yuding/tianshudonghua/第二个序列帧路径前缀",
".png",
1,
30, -- 第二个序列帧的结束帧数
{speed = 100, count = 30, loop = 1} -- 第二个序列帧的参数
)
GUI:setAnchorPoint(secondAnim, 0.5, 0.5)
GUI:setContentSize(secondAnim, screenWidth, screenHeight)
GUI:setIgnoreContentAdaptWithSize(secondAnim, false)
-- 如果需要,可以继续监听第二个序列帧的完成事件
GUI:Effect_addOnCompleteEvent(secondAnim, function()
SL:print("第二个序列帧动画播放完成")
-- 这里可以继续播放第三个序列帧或执行其他操作
end)
end)
end
```
**代码说明:**
1. **`GUI:Effect_addOnCompleteEvent`**:这是动画完成事件的监听函数,当序列帧动画播放完成后会自动调用回调函数
2. **回调函数内部**:在第一个序列帧播放完成后,创建并播放第二个序列帧动画
3. **动画参数**:第二个序列帧的参数需要根据实际资源调整:
- 路径前缀:`"res/yuding/tianshudonghua/第二个序列帧路径前缀"`
- 结束帧数:`30`(示例值,需要根据实际帧数修改)
- count参数:`30`(需要与结束帧数一致)
4. **链式播放**:如果需要播放更多序列帧,可以在第二个序列帧的完成事件中继续创建第三个序列帧,以此类推
**注意事项:**
- 确保第二个序列帧的资源路径和帧数正确
- 如果不需要播放第二个序列帧后继续播放,可以移除第二个`GUI:Effect_addOnCompleteEvent`
- 所有打印使用`SL:print()`而不是`print()`
要实现序列帧动画播放完成后再播放另一个序列帧,可以使用 `GUI:Effect_addOnCompleteEvent` 函数监听动画完成事件。
根据浮生梦老师前端课程内容,可以这样修改代码:
```lua
function diji(msgID, msgData)
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)
-- 监听第一个序列帧动画完成事件
GUI:Effect_addOnCompleteEvent(fullScreenAnim, function()
SL:print("第一个序列帧动画播放完成,开始播放第二个序列帧")
-- 创建第二个序列帧动画
local secondAnim = GUI:Frames_Create(
parent,
"SecondFrames",
screenWidth/2,
screenHeight/2,
"res/yuding/tianshudonghua/第二个序列帧路径前缀",
".png",
1,
30, -- 第二个序列帧的结束帧数
{speed = 100, count = 30, loop = 1} -- 第二个序列帧的参数
)
GUI:setAnchorPoint(secondAnim, 0.5, 0.5)
GUI:setContentSize(secondAnim, screenWidth, screenHeight)
GUI:setIgnoreContentAdaptWithSize(secondAnim, false)
-- 如果需要,可以继续监听第二个序列帧的完成事件
GUI:Effect_addOnCompleteEvent(secondAnim, function()
SL:print("第二个序列帧动画播放完成")
-- 这里可以继续播放第三个序列帧或执行其他操作
end)
end)
end
```
**代码说明:**
1. **`GUI:Effect_addOnCompleteEvent`**:这是动画完成事件的监听函数,当序列帧动画播放完成后会自动调用回调函数
2. **回调函数内部**:在第一个序列帧播放完成后,创建并播放第二个序列帧动画
3. **动画参数**:第二个序列帧的参数需要根据实际资源调整:
- 路径前缀:`"res/yuding/tianshudonghua/第二个序列帧路径前缀"`
- 结束帧数:`30`(示例值,需要根据实际帧数修改)
- count参数:`30`(需要与结束帧数一致)
4. **链式播放**:如果需要播放更多序列帧,可以在第二个序列帧的完成事件中继续创建第三个序列帧,以此类推
**注意事项:**
- 确保第二个序列帧的资源路径和帧数正确
- 如果不需要播放第二个序列帧后继续播放,可以移除第二个`GUI:Effect_addOnCompleteEvent`
- 所有打印使用`SL:print()`而不是`print()`
← 返回问答库