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:45:00 |
👁️ 阅读: 2
要实现ListView_2组件从下往上淡入滑动显示,以及淡出滑动隐藏的效果,我们可以创建两个独立的函数来处理动画。根据浮生梦老师前端课程内容,这里使用`GUI:ActionSequence`来组合动画效果。
```lua
-- 显示动画函数:从下往上淡入滑动
-- @param listView: ListView控件对象
-- @param duration: 动画持续时间(秒)
function npc:showListViewAnimation(listView, duration)
-- 先保存原始位置
local originalPos = GUI:getPosition(listView)
-- 设置初始状态:完全透明,位置在下方
GUI:setOpacity(listView, 0)
GUI:setPosition(listView, originalPos.x, originalPos.y + 100)
-- 创建动画序列:同时执行淡入和上移动画
local fadeInAction = GUI:ActionFadeTo(duration or 0.3, 255)
local moveUpAction = GUI:ActionMoveTo(duration or 0.3, originalPos.x, originalPos.y)
local spawnAction = GUI:ActionSpawn(fadeInAction, moveUpAction)
-- 执行动画
GUI:runAction(listView, spawnAction)
end
-- 隐藏动画函数:淡出滑动下来
-- @param listView: ListView控件对象
-- @param duration: 动画持续时间(秒)
-- @param callback: 动画完成后的回调函数
function npc:hideListViewAnimation(listView, duration, callback)
-- 获取当前位置
local currentPos = GUI:getPosition(listView)
-- 创建动画序列:同时执行淡出和下移动画
local fadeOutAction = GUI:ActionFadeTo(duration or 0.3, 0)
local moveDownAction = GUI:ActionMoveTo(duration or 0.3, currentPos.x, currentPos.y + 100)
local spawnAction = GUI:ActionSpawn(fadeOutAction, moveDownAction)
-- 如果需要回调,添加回调函数
if callback then
local sequenceAction = GUI:ActionSequence(spawnAction, GUI:CallFunc(callback))
GUI:runAction(listView, sequenceAction)
else
GUI:runAction(listView, spawnAction)
end
end
```
在你的代码中这样调用:
```lua
-- 显示ListView_2时调用
function npc:bag_item_show(p1, p2)
local ListView_2 = self.ui.ListView_2
GUI:setVisible(ListView_2, true)
-- 先设置内容...
-- 你的现有代码...
-- 然后执行显示动画
self:showListViewAnimation(ListView_2, 0.3)
end
-- 关闭ListView_2时调用
function npc:colse_bagitem()
local ListView_2 = self.ui.ListView_2
local function hideComplete()
GUI:ListView_removeAllItems(ListView_2)
GUI:setVisible(ListView_2, false)
-- 重置位置和透明度
local originalPos = GUI:getPosition(ListView_2)
GUI:setPosition(ListView_2, originalPos.x, originalPos.y - 100)
GUI:setOpacity(ListView_2, 255)
end
self:hideListViewAnimation(ListView_2, 0.3, hideComplete)
end
```
**参数说明:**
- `listView`: 需要动画的ListView控件对象
- `duration`: 动画持续时间,默认0.3秒
- `callback`: 隐藏动画完成后的回调函数(仅hide函数需要)
**注意:**
1. 动画前确保控件是可见的(`GUI:setVisible(listView, true)`)
2. 隐藏动画完成后会自动重置控件状态
3. 可以根据需要调整移动距离(代码中的100像素)和动画时长
这样你的ListView_2就会有平滑的淡入淡出滑动效果了!
← 返回问答库