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:35:45 |
👁️ 阅读: 4
要实现序列帧结束后在屏幕中心同时创建左侧序列帧和右侧淡入图片,需要在动画结束后执行回调函数。根据浮生梦老师前端课程内容,可以使用`GUI:CallFunc`创建回调动作,结合`GUI:ActionSequence`实现动画序列。
```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)
-- 创建动画结束回调
local function onAnimationComplete()
-- 在屏幕中心创建左侧序列帧
local leftAnim = GUI:Frames_Create(
parent,
"LeftFrames",
screenWidth/2 - 200, -- 左侧偏移200像素
screenHeight/2,
"res/yuding/tianshuzhen/b", -- 请替换为实际路径
".png",
1,
20, -- 请替换为实际帧数
{speed = 80, count = 20, loop = 1}
)
GUI:setAnchorPoint(leftAnim, 0.5, 0.5)
-- 在屏幕中心创建右侧图片(先设置透明度为0)
local rightImg = GUI:Image_Create(
parent,
"RightImage",
screenWidth/2 + 200, -- 右侧偏移200像素
screenHeight/2,
"res/public/1900000610.png"
)
GUI:setAnchorPoint(rightImg, 0.5, 0.5)
GUI:setOpacity(rightImg, 0) -- 初始透明
-- 执行淡入动画
GUI:runAction(rightImg, GUI:ActionFadeIn(1))
end
-- 将回调动作添加到序列帧动画中
-- 注意:需要根据实际动画时间计算延迟
GUI:runAction(fullScreenAnim, GUI:ActionSequence(
GUI:DelayTime(3.5), -- 35帧 * 100ms = 3500ms = 3.5秒
GUI:CallFunc(onAnimationComplete)
))
end
```
**关键点说明:**
1. **动画结束回调**:使用`GUI:CallFunc`创建回调函数,在动画结束后执行
2. **延迟时间计算**:35帧 * 100ms/帧 = 3500ms = 3.5秒,使用`GUI:DelayTime(3.5)`等待动画播放完成
3. **左侧序列帧**:在屏幕中心左侧创建,注意调整x坐标偏移量
4. **右侧图片淡入**:
- 先创建图片并设置初始透明度为0
- 使用`GUI:ActionFadeIn(1)`实现1秒淡入效果
**注意事项:**
- 请将左侧序列帧的路径和帧数替换为实际值
- 右侧图片使用了案例中指定的`public_win32/1900000610.png`
- 如果动画播放速度不同,需要调整`DelayTime`的参数值
这样就能实现全屏序列帧播放完毕后,在屏幕中心同时创建左侧序列帧和右侧淡入图片的效果了!
要实现序列帧结束后在屏幕中心同时创建左侧序列帧和右侧淡入图片,需要在动画结束后执行回调函数。根据浮生梦老师前端课程内容,可以使用`GUI:CallFunc`创建回调动作,结合`GUI:ActionSequence`实现动画序列。
```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)
-- 创建动画结束回调
local function onAnimationComplete()
-- 在屏幕中心创建左侧序列帧
local leftAnim = GUI:Frames_Create(
parent,
"LeftFrames",
screenWidth/2 - 200, -- 左侧偏移200像素
screenHeight/2,
"res/yuding/tianshuzhen/b", -- 请替换为实际路径
".png",
1,
20, -- 请替换为实际帧数
{speed = 80, count = 20, loop = 1}
)
GUI:setAnchorPoint(leftAnim, 0.5, 0.5)
-- 在屏幕中心创建右侧图片(先设置透明度为0)
local rightImg = GUI:Image_Create(
parent,
"RightImage",
screenWidth/2 + 200, -- 右侧偏移200像素
screenHeight/2,
"res/public/1900000610.png"
)
GUI:setAnchorPoint(rightImg, 0.5, 0.5)
GUI:setOpacity(rightImg, 0) -- 初始透明
-- 执行淡入动画
GUI:runAction(rightImg, GUI:ActionFadeIn(1))
end
-- 将回调动作添加到序列帧动画中
-- 注意:需要根据实际动画时间计算延迟
GUI:runAction(fullScreenAnim, GUI:ActionSequence(
GUI:DelayTime(3.5), -- 35帧 * 100ms = 3500ms = 3.5秒
GUI:CallFunc(onAnimationComplete)
))
end
```
**关键点说明:**
1. **动画结束回调**:使用`GUI:CallFunc`创建回调函数,在动画结束后执行
2. **延迟时间计算**:35帧 * 100ms/帧 = 3500ms = 3.5秒,使用`GUI:DelayTime(3.5)`等待动画播放完成
3. **左侧序列帧**:在屏幕中心左侧创建,注意调整x坐标偏移量
4. **右侧图片淡入**:
- 先创建图片并设置初始透明度为0
- 使用`GUI:ActionFadeIn(1)`实现1秒淡入效果
**注意事项:**
- 请将左侧序列帧的路径和帧数替换为实际值
- 右侧图片使用了案例中指定的`public_win32/1900000610.png`
- 如果动画播放速度不同,需要调整`DelayTime`的参数值
这样就能实现全屏序列帧播放完毕后,在屏幕中心同时创建左侧序列帧和右侧淡入图片的效果了!
← 返回问答库