GUI:addOnClickEvent(child, function()
-- 移除之前显示的克隆组件
if npc.currentClone and not GUI:Win_IsNull(npc.currentClone) then
GUI:removeFromParent(npc.currentClone)
npc.currentClone = n
🤖 回答引擎: 前端Lua |
🕒 时间: 2026-05-29 20:55:53 |
👁️ 阅读: 4
根据浮生梦老师前端课程内容,你的代码已经基本正确,但需要调整动画序列来实现"从很小回到原来大小"的效果。
以下是修改后的代码:
```lua
GUI:addOnClickEvent(child, function()
-- 移除之前显示的克隆组件
if npc.currentClone and not GUI:Win_IsNull(npc.currentClone) then
GUI:removeFromParent(npc.currentClone)
npc.currentClone = nil
end
-- 克隆新的Panel
local newPanel = GUI:Clone(npc.ui.Panel_1)
GUI:setVisible(newPanel, true)
-- 插入到当前按钮后面
local itemIndex = GUI:ListView_getItemIndex(npc.ui.ListView_1, child)
GUI:ListView_insertCustomItem(npc.ui.ListView_1, newPanel, itemIndex + 1)
-- 记录当前克隆组件
npc.currentClone = newPanel
-- 添加缩放动画:从小变大回到原来大小
-- 1. 先设置一个很小的初始状态
GUI:setScale(newPanel, 0.1, 0.1)
-- 2. 执行动画序列
GUI:runAction(newPanel, GUI:ActionSequence(
GUI:ActionScaleTo(0.2, 1.0, 1.0), -- 从0.1缩放到1.0(原始大小)
GUI:DelayTime(0.1), -- 保持原始大小0.1秒
GUI:ActionScaleTo(0.1, 1.2, 1.2), -- 稍微放大到1.2
GUI:ActionScaleTo(0.1, 1.0, 1.0) -- 回到原始大小
))
SL:print("点击了按钮:", name, "插入位置:", itemIndex + 1)
end)
```
**关键修改点:**
1. `GUI:setScale(newPanel, 0.1, 0.1)` - 先设置初始大小为10%
2. `GUI:ActionScaleTo(0.2, 1.0, 1.0)` - 从10%缩放到100%原始大小
3. 添加了轻微弹动效果:100% → 120% → 100%
**函数说明:**
- `GUI:setScale(widget, scaleX, scaleY)` - 直接设置缩放比例
- `GUI:ActionScaleTo(time, scaleX, scaleY)` - 缩放到指定比例
- `GUI:ActionSequence(action, ...)` - 多个动作顺序播放
- `GUI:DelayTime(time)` - 延迟时间
这样就能实现从很小(10%)逐渐变大到原始大小,并带有轻微弹动效果。
根据浮生梦老师前端课程内容,你的代码已经基本正确,但需要调整动画序列来实现"从很小回到原来大小"的效果。
以下是修改后的代码:
```lua
GUI:addOnClickEvent(child, function()
-- 移除之前显示的克隆组件
if npc.currentClone and not GUI:Win_IsNull(npc.currentClone) then
GUI:removeFromParent(npc.currentClone)
npc.currentClone = nil
end
-- 克隆新的Panel
local newPanel = GUI:Clone(npc.ui.Panel_1)
GUI:setVisible(newPanel, true)
-- 插入到当前按钮后面
local itemIndex = GUI:ListView_getItemIndex(npc.ui.ListView_1, child)
GUI:ListView_insertCustomItem(npc.ui.ListView_1, newPanel, itemIndex + 1)
-- 记录当前克隆组件
npc.currentClone = newPanel
-- 添加缩放动画:从小变大回到原来大小
-- 1. 先设置一个很小的初始状态
GUI:setScale(newPanel, 0.1, 0.1)
-- 2. 执行动画序列
GUI:runAction(newPanel, GUI:ActionSequence(
GUI:ActionScaleTo(0.2, 1.0, 1.0), -- 从0.1缩放到1.0(原始大小)
GUI:DelayTime(0.1), -- 保持原始大小0.1秒
GUI:ActionScaleTo(0.1, 1.2, 1.2), -- 稍微放大到1.2
GUI:ActionScaleTo(0.1, 1.0, 1.0) -- 回到原始大小
))
SL:print("点击了按钮:", name, "插入位置:", itemIndex + 1)
end)
```
**关键修改点:**
1. `GUI:setScale(newPanel, 0.1, 0.1)` - 先设置初始大小为10%
2. `GUI:ActionScaleTo(0.2, 1.0, 1.0)` - 从10%缩放到100%原始大小
3. 添加了轻微弹动效果:100% → 120% → 100%
**函数说明:**
- `GUI:setScale(widget, scaleX, scaleY)` - 直接设置缩放比例
- `GUI:ActionScaleTo(time, scaleX, scaleY)` - 缩放到指定比例
- `GUI:ActionSequence(action, ...)` - 多个动作顺序播放
- `GUI:DelayTime(time)` - 延迟时间
这样就能实现从很小(10%)逐渐变大到原始大小,并带有轻微弹动效果。
← 返回问答库