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)
-- 创建容器在屏幕正上方
-- 容器宽20
🤖 回答引擎: 前端Lua |
🕒 时间: 2026-04-15 13:45:05 |
👁️ 阅读: 7
```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)
-- 容器尺寸
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)
-- 设置容器锚点为底部中心 (0.5, 0)
GUI:setAnchorPoint(container, 0.5, 0)
-- 创建背景
local bg = GUI:Image_Create(container, "bg_image", 0, 0, "res/xixi/ditu/3.png")
GUI:setContentSize(bg, containerWidth, containerHeight)
-- 设置初始状态:宽度0,高度0,缩放0.1,透明度0
GUI:setContentSize(container, 0, 0)
GUI:setScaleX(container, 0.1)
GUI:setScaleY(container, 0.1)
GUI:setOpacity(container, 0)
-- 定义动作序列
local function startAnimation()
-- 第一步:1秒内拉伸到原尺寸并淡入
local action1 = GUI:ActionSequence(
GUI:ActionScaleTo(1, 1), -- 缩放到原尺寸
GUI:ActionFadeIn(1) -- 淡入到255
)
-- 第二步:1秒后淡出并隐藏
local function hideContainer()
GUI:setVisible(container, false)
end
local action2 = GUI:ActionSequence(
GUI:DelayTime(1), -- 等待1秒
GUI:ActionFadeOut(1), -- 淡出到0
GUI:CallFunc(hideContainer) -- 隐藏容器
)
-- 合并动作
local finalAction = GUI:ActionSequence(
GUI:ActionSpawn( -- 同时执行多个动作
GUI:ActionScaleTo(1, 1), -- 缩放
GUI:ActionFadeIn(1) -- 淡入
),
action2
)
-- 执行动作
GUI:runAction(container, finalAction)
end
-- 开始动画
startAnimation()
end
```
**说明:**
1. 使用`GUI:setAnchorPoint(container, 0.5, 0)`设置容器锚点为底部中心
2. 初始状态设置:宽度0、高度0、缩放0.1、透明度0
3. 使用`ActionSpawn`让缩放和淡入同时进行
4. 淡出后调用`setVisible`隐藏容器
5. 所有函数均来自浮生梦老师前端课程内容
**注意:**
- 容器收缩宽度为0是通过`setContentSize(container, 0, 0)`实现的
- 缩放动画使用`ActionScaleTo`而不是`ActionScaleBy`
- 淡入淡出使用`ActionFadeIn`和`ActionFadeOut`
- 动作顺序通过`ActionSequence`控制时间线
← 返回问答库