local actClick = GUI:ActionSequence(GUI:ActionScaleTo(0.08, 0.55), GUI:ActionScaleTo(0.1, 1.0))
类似这样的 给我封装一个 用于列表容器子控件展示的动画效果,具体效果你看着办
🤖 回答引擎: 前端Lua |
🕒 时间: 2026-05-31 18:10:59 |
👁️ 阅读: 3
```lua
-- 封装一个列表子项动画效果函数
-- @param item: 列表子项控件对象
-- @param delay: 延迟时间(可选,默认0)
function createListItemAnimation(item, delay)
-- 先检查控件是否有效
if GUI:Win_IsNull(item) then
SL:print("动画控件无效")
return
end
-- 设置初始状态
GUI:setScale(item, 0.5) -- 初始缩小到50%
GUI:setOpacity(item, 0) -- 初始完全透明
-- 创建动画序列
local animation = GUI:ActionSequence(
GUI:DelayTime(delay or 0), -- 延迟播放
GUI:ActionSpawn( -- 同时执行缩放和淡入
GUI:ActionScaleTo(0.15, 1.2), -- 放大到120%
GUI:ActionFadeTo(0.15, 255) -- 淡入到完全不透明
),
GUI:ActionScaleTo(0.1, 1.0) -- 恢复到正常大小
)
-- 播放动画
GUI:runAction(item, animation)
end
-- 使用示例:
-- 假设你有一个列表容器listView,需要为每个子项添加动画
local listView = GUI:ListView_Create(parent, "myListView", 0, 0, 300, 400, 1, 100, 50, 5)
-- 创建子项并添加动画
for i = 1, 5 do
local item = GUI:Layout_Create(listView, "item_" .. i, 0, 0, 100, 50, false)
local text = GUI:Text_Create(item, "text", 10, 25, 14, "#ffffff", "项目" .. i)
-- 添加到列表
GUI:ListView_pushBackCustomItem(listView, item)
-- 为每个子项添加动画,设置不同的延迟时间实现依次出现效果
createListItemAnimation(item, (i-1) * 0.1) -- 每个间隔0.1秒
end
-- 如果你想要点击子项时的反馈动画,可以这样:
function addItemClickAnimation(item)
GUI:addOnClickEvent(item, function()
-- 点击时先缩小再恢复
local clickAnim = GUI:ActionSequence(
GUI:ActionScaleTo(0.05, 0.9),
GUI:ActionScaleTo(0.05, 1.0)
)
GUI:runAction(item, clickAnim)
SL:print("点击了列表项")
end)
end
-- 注意:ActionFadeTo函数在浮生梦老师前端课程中用于设置透明度渐变
-- 第一个参数是动画时间,第二个参数是目标透明度(0-255)
```
这个封装函数创建了一个组合动画效果:
1. 子项初始状态是缩小50%且完全透明
2. 延迟后同时执行放大到120%和淡入效果
3. 最后缩小回正常大小
效果类似于卡片依次飞入的效果,很适合列表展示。你可以调整时间参数来改变动画速度。
← 返回问答库