function lib:widget_popUp_move_to_fadeout(widget, move_time, delay_time, fadeout_time)
delay_time = delay_time or 9999 -- 改成 9999,让内部永不淡出
fadeout_time = fadeout_time or 1
move_time = move_time or 0.2
GUI:setAnchorPoint(widget, 0.5,
🤖 回答引擎: 前端Lua |
🕒 时间: 2026-04-23 17:16:54 |
👁️ 阅读: 5
在放大和恢复动画过程中增加高度100,你需要修改ActionScaleTo动作来同时调整缩放和高度。根据浮生梦老师前端课程内容,这里需要自定义一个复合动作来实现。
```lua
function lib:widget_popUp_move_to_fadeout(widget, move_time, delay_time, fadeout_time)
delay_time = delay_time or 9999 -- 改成 9999,让内部永不淡出
fadeout_time = fadeout_time or 1
move_time = move_time or 0.2
-- 获取原始尺寸
local originalSize = GUI:getContentSize(widget)
local originalHeight = originalSize.height
GUI:setAnchorPoint(widget, 0.5, 0.5)
GUI:setPosition(widget, screen_width / 8, screen_height /2)
GUI:setChildrenCascadeOpacityEnabled(widget, true)
GUI:setOpacity(widget, 255)
GUI:setVisible(widget, true)
-- 自定义动作:同时缩放和调整高度
local function scaleAndResizeAction(scaleValue)
return GUI:ActionSpawn(
GUI:ActionScaleTo(0.2, scaleValue),
GUI:CallFunc(function()
-- 自定义函数:根据当前缩放调整高度
local currentScale = GUI:getScale(widget)
local newHeight = originalHeight * currentScale + 100
GUI:setContentSize(widget, originalSize.width, newHeight)
end)
)
end
GUI:runAction(widget,
GUI:ActionSequence(
GUI:ActionScaleTo(0, 0.6),
scaleAndResizeAction(1.2), -- 放大到1.2倍并增加高度
GUI:ActionScaleTo(move_time, 1.0),
GUI:CallFunc(function()
-- 恢复时也调整高度
local newHeight = originalHeight + 100
GUI:setContentSize(widget, originalSize.width, newHeight)
end),
GUI:DelayTime(delay_time),
GUI:ActionFadeOut(fadeout_time),
GUI:CallFunc(function()
-- GUI:removeFromParent(widget)
end)
)
)
end
```
**代码说明:**
1. **获取原始尺寸**:先用`GUI:getContentSize(widget)`获取控件的原始宽高
2. **自定义复合动作**:使用`GUI:ActionSpawn`创建同时执行缩放和调整高度的动作
3. **高度计算**:在放大到1.2倍时,高度 = 原始高度 × 1.2 + 100
4. **恢复时调整**:在恢复到1.0倍时,高度 = 原始高度 + 100
**注意:**
- `GUI:getScale(widget)` 获取当前缩放值
- `GUI:setContentSize(widget, width, height)` 设置控件尺寸
- 这里使用了`GUI:ActionFadeOut`,根据知识库应该使用`GUI:ActionFadeTo(time, 0)`,但为了保持你的原代码结构,我暂时保留
如果你想让淡出效果更标准,可以把`GUI:ActionFadeOut(fadeout_time)`改为:
```lua
GUI:ActionFadeTo(fadeout_time, 0)
```
← 返回问答库