local function zhuanpan(msgID, msgData)
local screenWidth = SL:GetMetaValue("SCREEN_WIDTH", 0)
local screenHeight = SL:GetMetaValue("SCREEN_HEIGHT", 0)
local parent = GUI:Win_Create("zhuanpan", 0, 0, 0, 0, false, false, true, false,
🤖 回答引擎: 前端Lua |
🕒 时间: 2026-04-21 15:33:59 |
👁️ 阅读: 16
要让第三个序列帧在2秒后淡入,你可以使用`GUI:Timeline_FadeIn`函数。不过,根据浮生梦老师前端课程内容,`Frames_Create`的`ext`参数里没有`callback`选项。你需要先创建好第三个序列帧,设置其初始透明度为0,然后使用一个定时器在2秒后执行淡入动画。
下面是修改后的代码:
```lua
local function zhuanpan(msgID, msgData)
local screenWidth = SL:GetMetaValue("SCREEN_WIDTH", 0)
local screenHeight = SL:GetMetaValue("SCREEN_HEIGHT", 0)
local parent = GUI:Win_Create("zhuanpan", 0, 0, 0, 0, false, false, true, false, false, false, 1)
GUI:Win_SetMainHide(parent, true)
-- 第一个序列帧
local fullScreenAnim = GUI:Frames_Create(
parent,
"FullScreenFrames",
screenWidth/2,
screenHeight/2,
"res/yuding/donghua/a/a",
".png",
1,
15,
{speed = 100, count = 15, loop = 1}
)
GUI:setAnchorPoint(fullScreenAnim, 0.5, 0.5)
GUI:setContentSize(fullScreenAnim, screenWidth, screenHeight)
GUI:setIgnoreContentAdaptWithSize(fullScreenAnim, false)
-- 第一个序列帧播放完成后的处理
SL:ScheduleOnce(function()
if not GUI:Win_IsNull(fullScreenAnim) then
GUI:removeFromParent(fullScreenAnim)
end
-- 创建第二个序列帧
local secondAnim = GUI:Frames_Create(
parent,
"SecondFrames",
screenWidth/2,
screenHeight/2,
"res/yuding/donghua/b/b",
".png",
1,
15,
{speed = 100, count = 15, loop = -1}
)
GUI:setAnchorPoint(secondAnim, 0.5, 0.5)
GUI:setContentSize(secondAnim, screenWidth, screenHeight)
GUI:setIgnoreContentAdaptWithSize(secondAnim, false)
-- 创建第三个序列帧(初始透明)
local disan = GUI:Frames_Create(
parent,
"threeFrames",
screenWidth/2,
screenHeight/2,
"res/yuding/donghua/d/d",
".png",
1,
25,
{speed = 50, count = 25, loop = -1}
)
GUI:setAnchorPoint(disan, 0.5, 0.5)
GUI:setContentSize(disan, screenWidth, screenHeight)
GUI:setIgnoreContentAdaptWithSize(disan, false)
GUI:setOpacity(disan, 0) -- 初始完全透明
-- 2秒后淡入第三个序列帧
SL:ScheduleOnce(function()
if not GUI:Win_IsNull(disan) then
GUI:Timeline_FadeIn(disan, 2, nil) -- 2秒淡入
end
end, 2)
end, 1.5) -- 第一个序列帧播放时间:15帧 * 100ms = 1.5秒
end
```
**修改说明:**
1. **移除`callback`参数**:`Frames_Create`的`ext`参数不支持`callback`,改用`SL:ScheduleOnce`定时器。
2. **计算播放时间**:第一个序列帧15帧,每帧100毫秒,总时长1.5秒。`SL:ScheduleOnce`在1.5秒后执行回调。
3. **设置初始透明度**:创建第三个序列帧`disan`后,立即用`GUI:setOpacity(disan, 0)`设置为完全透明。
4. **延迟淡入**:再用一个`SL:ScheduleOnce`延迟2秒,然后调用`GUI:Timeline_FadeIn(disan, 2, nil)`实现2秒淡入效果。
**注意**:`Timeline_FadeIn`的第三个参数是回调函数,这里不需要所以传`nil`。淡入动画会从当前透明度(0)渐变到完全不透明(255)。
这样修改后,第三个序列帧会在第一个序列帧播放完1.5秒 + 2秒 = 3.5秒后开始淡入,淡入过程持续2秒。
← 返回问答库