function qiehuan(actor)
local k = SL:GetMetaValue("SCREEN_WIDTH")
local g = SL:GetMetaValue("SCREEN_HEIGHT")
-- 创建父节点
local parent = GUI:Win_Create("MapChangeContainer", 0, 0, 0, 0, false, false, true, false, false, false, 1)
--
🤖 回答引擎: 前端Lua |
🕒 时间: 2026-04-15 13:32:27 |
👁️ 阅读: 8
我来帮你完善这个地图切换提示容器的动画效果。
```lua
function qiehuan(actor)
local k = SL:GetMetaValue("SCREEN_WIDTH")
local g = SL:GetMetaValue("SCREEN_HEIGHT")
-- 创建父节点
local parent = GUI:Win_Create("MapChangeContainer", 0, 0, 0, 0, false, false, true, false, false, false, 1)
-- 容器宽200,高63
local containerWidth = 200
local containerHeight = 63
-- 计算容器位置(正上方居中)
local posX = k / 2 - containerWidth / 3
local posY = g - 163 -- 屏幕顶部
-- 创建容器
local container = GUI:Layout_Create(parent, "top_container", posX, posY, containerWidth, containerHeight, false)
-- 添加背景
local bg = GUI:Image_Create(container, "bg_image", 0, 0, "res/xixi/ditu/3.png")
GUI:setContentSize(bg, containerWidth, containerHeight)
-- 设置初始状态:缩小到0.1倍
GUI:setScale(container, 0.1)
GUI:setOpacity(container, 0) -- 初始完全透明
-- 创建动画序列
local function startAnimation()
-- 第一阶段:收缩(缩小并保持)
local shrinkAction = GUI:ActionScaleTo(0.3, 0.8)
local shrinkSequence = GUI:ActionSequence(shrinkAction)
GUI:runAction(container, shrinkSequence)
-- 第二阶段:放大、淡入、拉伸同时进行
SL:ScheduleOnce(function()
-- 停止之前的动作
GUI:stopAllActions(container)
-- 创建同时进行的动作
local scaleAction = GUI:ActionScaleTo(0.5, 1.2) -- 放大到1.2倍
local fadeInAction = GUI:ActionFadeIn(0.5) -- 淡入
local moveAction = GUI:ActionMoveBy(0.5, 0, -20) -- 向上拉伸效果
-- 使用ActionSpawn让三个动作同时执行
local spawnAction = GUI:ActionSpawn(scaleAction, fadeInAction, moveAction)
GUI:runAction(container, spawnAction)
-- 第三阶段:1秒后淡出并隐藏
SL:ScheduleOnce(function()
-- 淡出动作
local fadeOutAction = GUI:ActionFadeOut(0.5)
local fadeOutSequence = GUI:ActionSequence(fadeOutAction, GUI:CallFunc(function()
-- 淡出完成后隐藏
GUI:setVisible(container, false)
-- 移除父节点
GUI:removeFromParent(container)
end))
GUI:runAction(container, fadeOutSequence)
end, 1.0)
end, 0.3)
end
-- 开始动画
startAnimation()
end
```
**动画效果说明:**
1. **收缩阶段**(0.3秒):
- 容器从0.1倍缩放到0.8倍
2. **放大淡入阶段**(0.5秒):
- 同时执行三个动作:
- 缩放到1.2倍(放大效果)
- 完全淡入显示
- 向上移动20像素(拉伸感)
3. **等待阶段**(1秒):
- 保持显示状态
4. **淡出隐藏阶段**(0.5秒):
- 淡出到完全透明
- 隐藏并移除容器
**注意要点:**
- 使用`ActionSpawn`实现多个动作同时播放
- 使用`ScheduleOnce`进行延时控制
- 动画结束后记得隐藏和移除节点,避免内存泄漏
- 初始设置了透明度和缩放,确保动画起点正确
这个动画流程符合你要求的"缩小收缩 → 放大淡入拉伸 → 等待 → 淡出隐藏"的效果。
我来帮你完善这个地图切换提示容器的动画效果。
```lua
function qiehuan(actor)
local k = SL:GetMetaValue("SCREEN_WIDTH")
local g = SL:GetMetaValue("SCREEN_HEIGHT")
-- 创建父节点
local parent = GUI:Win_Create("MapChangeContainer", 0, 0, 0, 0, false, false, true, false, false, false, 1)
-- 容器宽200,高63
local containerWidth = 200
local containerHeight = 63
-- 计算容器位置(正上方居中)
local posX = k / 2 - containerWidth / 3
local posY = g - 163 -- 屏幕顶部
-- 创建容器
local container = GUI:Layout_Create(parent, "top_container", posX, posY, containerWidth, containerHeight, false)
-- 添加背景
local bg = GUI:Image_Create(container, "bg_image", 0, 0, "res/xixi/ditu/3.png")
GUI:setContentSize(bg, containerWidth, containerHeight)
-- 设置初始状态:缩小到0.1倍
GUI:setScale(container, 0.1)
GUI:setOpacity(container, 0) -- 初始完全透明
-- 创建动画序列
local function startAnimation()
-- 第一阶段:收缩(缩小并保持)
local shrinkAction = GUI:ActionScaleTo(0.3, 0.8)
local shrinkSequence = GUI:ActionSequence(shrinkAction)
GUI:runAction(container, shrinkSequence)
-- 第二阶段:放大、淡入、拉伸同时进行
SL:ScheduleOnce(function()
-- 停止之前的动作
GUI:stopAllActions(container)
-- 创建同时进行的动作
local scaleAction = GUI:ActionScaleTo(0.5, 1.2) -- 放大到1.2倍
local fadeInAction = GUI:ActionFadeIn(0.5) -- 淡入
local moveAction = GUI:ActionMoveBy(0.5, 0, -20) -- 向上拉伸效果
-- 使用ActionSpawn让三个动作同时执行
local spawnAction = GUI:ActionSpawn(scaleAction, fadeInAction, moveAction)
GUI:runAction(container, spawnAction)
-- 第三阶段:1秒后淡出并隐藏
SL:ScheduleOnce(function()
-- 淡出动作
local fadeOutAction = GUI:ActionFadeOut(0.5)
local fadeOutSequence = GUI:ActionSequence(fadeOutAction, GUI:CallFunc(function()
-- 淡出完成后隐藏
GUI:setVisible(container, false)
-- 移除父节点
GUI:removeFromParent(container)
end))
GUI:runAction(container, fadeOutSequence)
end, 1.0)
end, 0.3)
end
-- 开始动画
startAnimation()
end
```
**动画效果说明:**
1. **收缩阶段**(0.3秒):
- 容器从0.1倍缩放到0.8倍
2. **放大淡入阶段**(0.5秒):
- 同时执行三个动作:
- 缩放到1.2倍(放大效果)
- 完全淡入显示
- 向上移动20像素(拉伸感)
3. **等待阶段**(1秒):
- 保持显示状态
4. **淡出隐藏阶段**(0.5秒):
- 淡出到完全透明
- 隐藏并移除容器
**注意要点:**
- 使用`ActionSpawn`实现多个动作同时播放
- 使用`ScheduleOnce`进行延时控制
- 动画结束后记得隐藏和移除节点,避免内存泄漏
- 初始设置了透明度和缩放,确保动画起点正确
这个动画流程符合你要求的"缩小收缩 → 放大淡入拉伸 → 等待 → 淡出隐藏"的效果。
← 返回问答库