如何做一个切换地图 屏幕上显示出地图名的淡入淡出效果的文字
🤖 回答引擎: 前端Lua |
🕒 时间: 2026-04-16 18:12:20 |
👁️ 阅读: 12
要实现切换地图时显示地图名的淡入淡出效果,可以使用以下代码:
```lua
-- 注册地图切换事件
SL:RegisterLUAEvent(LUA_EVENT_MAPINFOCHANGE, "ShowMapName", function()
-- 获取当前地图名
local mapName = SL:GetMetaValue("ACTOR_MAP_NAME") or ""
-- 创建父窗口(如果不存在)
local parent = GUI:Win_Create("MapNameParent", 0, 0, 0, 0, false, false, true, false, false, false, 1)
-- 获取屏幕尺寸
local screenW = SL:GetMetaValue("SCREEN_WIDTH")
local screenH = SL:GetMetaValue("SCREEN_HEIGHT")
-- 创建显示地图名的文字控件
local textLabel = GUI:Text_Create(parent, "Text_mapName", screenW/2, screenH/2, 24, "#ffffff", mapName)
GUI:Text_setFontName(textLabel, "fonts/font5.ttf")
GUI:setAnchorPoint(textLabel, 0.5, 0.5)
GUI:setIgnoreContentAdaptWithSize(textLabel, true)
-- 先设置完全透明
GUI:setOpacity(textLabel, 0)
-- 淡入效果(2秒)
local fadeInAction = GUI:Timeline_FadeIn(textLabel, 2, function()
-- 淡入完成后延迟1秒开始淡出
SL:ScheduleOnce(function()
-- 淡出效果(2秒)
GUI:Timeline_FadeOut(textLabel, 2, function()
-- 淡出完成后移除控件
GUI:removeFromParent(textLabel)
end)
end, 1)
end)
end)
```
**代码说明:**
1. **事件监听**:使用 `SL:RegisterLUAEvent` 监听 `LUA_EVENT_MAPINFOCHANGE` 事件,当地图切换时触发
2. **获取地图名**:通过 `SL:GetMetaValue("ACTOR_MAP_NAME")` 获取当前地图名称
3. **创建界面**:先创建父窗口,然后创建文字控件显示地图名
- 位置:屏幕中央
- 字体大小:24
- 颜色:白色
- 字体文件:fonts/font5.ttf
4. **淡入效果**:使用 `GUI:Timeline_FadeIn` 实现2秒淡入
- 先设置透明度为0
- 淡入到完全显示
5. **淡出效果**:淡入完成后延迟1秒,使用 `GUI:Timeline_FadeOut` 实现2秒淡出
- 淡出完成后用 `GUI:removeFromParent` 移除控件
6. **定时器**:使用 `SL:ScheduleOnce` 实现延迟,符合浮生梦老师前端课程中的定时器使用规范
**注意事项:**
- 确保字体文件 `fonts/font5.ttf` 存在于资源目录
- 文字会显示在屏幕中央,持续约5秒(淡入2秒+停留1秒+淡出2秒)
- 每次切换地图都会创建新的文字效果,旧的会自动移除
如果需要调整显示位置、字体大小或动画时间,可以修改对应的参数值。
← 返回问答库