local npc = {}
npc.__cname = "XingZhenUI"
npc.cfg = Xz_1
npc.data = {}
local bag_item_type = {
[1] = "碎星石",
[2] = "尘星石",
[3] = "辉星石",
[4] = "耀星石",
[5] = "恒星星石",
}
function npc.main(visible)
GUIUtil:Lua_SubmitForm("星阵", "xing
🤖 回答引擎: 前端Lua |
🕒 时间: 2026-05-24 01:43:34 |
👁️ 阅读: 2
根据浮生梦老师前端课程内容,要实现ListView_2的淡入滑动和淡出滑动效果,可以使用动作组合。这里为你封装两个函数,可以直接调用:
```lua
-- ListView_2淡入滑动动画(从下往上)
function npc:listViewFadeInSlide()
local ListView_2 = self.ui.ListView_2
if GUI:Win_IsNull(ListView_2) then
return
end
-- 先设置初始状态:完全透明,位置在下方
GUI:setOpacity(ListView_2, 0)
local currentPos = GUI:getPosition(ListView_2)
local startY = currentPos.y - 100 -- 从下方100像素位置开始
GUI:setPosition(ListView_2, currentPos.x, startY)
GUI:setVisible(ListView_2, true)
-- 创建淡入+向上滑动动作
local fadeIn = GUI:ActionFadeTo(0.3, 255) -- 0.3秒淡入到不透明
local moveUp = GUI:ActionMoveTo(0.3, currentPos.x, currentPos.y) -- 0.3秒移动到原位置
-- 同时执行淡入和滑动
local spawnAction = GUI:ActionSpawn(fadeIn, moveUp)
-- 运行动作
GUI:runAction(ListView_2, spawnAction)
end
-- ListView_2淡出滑动动画(从上往下滑出)
function npc:listViewFadeOutSlide()
local ListView_2 = self.ui.ListView_2
if GUI:Win_IsNull(ListView_2) then
return
end
-- 获取当前位置
local currentPos = GUI:getPosition(ListView_2)
local endY = currentPos.y - 100 -- 向下移动100像素
-- 创建淡出+向下滑动动作
local fadeOut = GUI:ActionFadeTo(0.3, 0) -- 0.3秒淡出到透明
local moveDown = GUI:ActionMoveTo(0.3, currentPos.x, endY) -- 0.3秒向下移动
-- 同时执行淡出和滑动
local spawnAction = GUI:ActionSpawn(fadeOut, moveDown)
-- 动作完成后隐藏组件
local callback = function()
GUI:setVisible(ListView_2, false)
-- 恢复位置和透明度
GUI:setPosition(ListView_2, currentPos.x, currentPos.y)
GUI:setOpacity(ListView_2, 255)
end
local sequenceAction = GUI:ActionSequence(spawnAction, GUI:CallFunc(callback))
-- 运行动作
GUI:runAction(ListView_2, sequenceAction)
end
```
使用方式:
```lua
-- 显示时调用淡入滑动
function npc:bag_item_show(p1, p2)
local ListView_2 = self.ui.ListView_2
-- ... 原有的创建内容代码 ...
-- 创建完成后调用淡入动画
self:listViewFadeInSlide()
end
-- 关闭时调用淡出滑动
function npc:colse_bagitem()
-- 先执行淡出动画
self:listViewFadeOutSlide()
-- 动画完成后会隐藏并清理,所以不需要立即执行以下操作
-- 原有的清理代码会在动画回调中执行
end
```
注意:需要在`bag_item_show`函数中移除原有的`GUI:setVisible(ListView_2, true)`,改为调用动画函数。动画完成后会自动恢复组件状态,确保下次显示时位置和透明度正确。
← 返回问答库