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:25:46 |
👁️ 阅读: 5
要实现序列帧结束后在屏幕中心左右两侧创建动画和图片,需要用到`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 function onFullScreenAnimFinish()
-- 左边序列帧(偏移200像素)
local leftAnim = GUI:Frames_Create(
parent,
"LeftFrames",
screenWidth/2 - 200, -- 向左偏移200像素
screenHeight/2,
"res/yuding/tianshudonghua/fanshuzhen/a", -- 根据你的实际路径修改
".png",
1,
35,
{speed = 100, count = 35, loop = 1}
)
GUI:setAnchorPoint(leftAnim, 0.5, 0.5)
GUI:setContentSize(leftAnim, 300, 300) -- 设置合适的大小
-- 右边淡入图片
local rightImage = GUI:Image_Create(
parent,
'RightImage',
screenWidth/2 + 200, -- 向右偏移200像素
screenHeight/2,
'res/public_win32/1900000610.png' -- 使用指定的背景图片
)
GUI:setAnchorPoint(rightImage, 0.5, 0.5)
GUI:setContentSize(rightImage, 200, 200)
-- 设置初始透明度为0(完全透明)
GUI:setOpacity(rightImage, 0)
-- 执行淡入动作
GUI:runAction(rightImage, GUI:ActionFadeIn(1)) -- 1秒淡入
end
-- 为全屏序列帧添加结束动作
GUI:runAction(fullScreenAnim, GUI:ActionSequence(
GUI:DelayTime(35 * 0.1), -- 35帧 * 每帧100ms = 3.5秒
GUI:CallFunc(onFullScreenAnimFinish)
))
```
**关键点说明:**
1. **回调函数**:使用`GUI:CallFunc(onFullScreenAnimFinish)`创建回调函数,在全屏序列帧播放结束后执行
2. **左边序列帧**:
- 位置:`screenWidth/2 - 200`(屏幕中心向左偏移200像素)
- 使用与全屏相同的序列帧资源,你可以根据需要修改路径
- 设置合适的内容大小:`300x300`
3. **右边淡入图片**:
- 位置:`screenWidth/2 + 200`(屏幕中心向右偏移200像素)
- 使用指定的背景图片:`res/public_win32/1900000610.png`
- 先设置透明度为0:`GUI:setOpacity(rightImage, 0)`
- 执行1秒淡入动作:`GUI:ActionFadeIn(1)`
4. **时间计算**:
- 全屏序列帧35帧,每帧100ms,总时长3.5秒
- 使用`GUI:DelayTime(3.5)`等待序列帧播放完毕
**注意**:如果你需要不同的偏移距离,可以修改`-200`和`+200`这两个数值。同样,图片和序列帧的路径也可以根据实际需求调整。
← 返回问答库