ChuanSong = {}
local cfg_chuansong = {
{ index = 1, mapname = "比奇矿洞", mapid = "d411", needlv = 0, consume = "", isXh = false, bossshow = "尸王", showitems = "法神披风#霓裳羽衣#法神头盔#法神项链#法神手镯#法神戒指" },
{ index = 2, mapname = "蜈蚣洞穴", mapid = "d413", need
🤖 回答引擎: 前端Lua |
🕒 时间: 2026-04-02 11:08:14 |
👁️ 阅读: 2
看了你的代码,我发现了几个问题:
1. **淡出动画的调用时机不对**:你是在按钮点击事件里调用的淡出动画,但这时候控件的透明度是100%,没有渐变效果
2. **没有设置初始透明度**:淡出动画需要从可见状态过渡到透明,但你之前已经设置了所有控件透明度为0
这是修改后的正确写法:
```lua
-- 在ChuanSong.main函数中,创建界面后先设置初始透明度
function ChuanSong.main(p1, p2, p3, json)
local parent = GUI:Win_Create("ChuanSong", 0, 0, 0, 0, false, false, true, true)
GUI:LoadExport(parent, "Mio_Project/ChuanSong")
ChuanSong.parent = parent
ChuanSong.ui = GUI:ui_delegate(parent)
-- 设置初始透明度为255(完全不透明)
GUI:setOpacity(parent, 255)
-- 按钮点击事件 点击黑色背景关闭界面
GUI:addOnClickEvent(ChuanSong.ui.Layout_Background, function()
-- 先设置透明度为255,确保有淡出效果
GUI:setOpacity(parent, 255)
GUI:Timeline_FadeOut(parent, 0.2, function()
GUI:Win_Close(parent)
end)
end)
-- 按钮点击事件 点击关闭按钮关闭界面
GUI:addOnClickEvent(ChuanSong.ui.Close, function()
GUI:setOpacity(parent, 255)
GUI:Timeline_FadeOut(parent, 0.2, function()
GUI:Win_Close(parent)
end)
end)
-- 其他代码...
end
```
**关键点说明**:
- 使用`GUI:setOpacity(widget, 255)`设置控件完全不透明
- 在调用`GUI:Timeline_FadeOut`之前确保控件是可见的
- 淡出动画会从当前透明度过渡到0,所以需要先设置好初始状态
另外,你之前写的这个逻辑有问题:
```lua
if ChuanSong._firstClick then
GUI:setOpacity(v, 0) -- 设置初始透明度为0
GUI:Timeline_FadeIn(v, 0.2, function() end)
end
```
这样设置后,界面一打开就是透明的,再点击关闭时淡出就没效果了。应该去掉`GUI:setOpacity(v, 0)`这行。
记住浮生梦老师的话:动画效果要确保初始状态正确!
← 返回问答库