给我一套前端按钮收起展开的脚本,要求展开收起有动作
🤖 回答引擎: 前端Lua |
🕒 时间: 2026-06-02 15:18:42 |
👁️ 阅读: 8
根据浮生梦老师前端课程内容,我来给你一套完整的按钮收起展开脚本,包含平滑的展开收起动作效果。
```lua
-- 创建主界面
local parent = GUI:Win_Create("GMMain", 0, 0, 0, 0, false, false, true, false, false, false, 1)
-- 创建展开按钮
local btnExpand = GUI:Button_Create(parent, "btn_expand", 100, 100, "res/public/1900000612.png")
GUI:Button_setTitleText(btnExpand, "展开")
GUI:Button_setTitleColor(btnExpand, "#ffffff")
GUI:Button_setTitleFontSize(btnExpand, 14)
-- 创建收起按钮(初始隐藏)
local btnCollapse = GUI:Button_Create(parent, "btn_collapse", 100, 100, "res/public/1900000612.png")
GUI:Button_setTitleText(btnCollapse, "收起")
GUI:Button_setTitleColor(btnCollapse, "#ffffff")
GUI:Button_setTitleFontSize(btnCollapse, 14)
GUI:setVisible(btnCollapse, false)
-- 创建要收起展开的内容面板
local contentPanel = GUI:Layout_Create(parent, "content_panel", 150, 150, 200, 0, false)
GUI:Layout_setBackGroundColorOpacity(contentPanel, 150)
GUI:setVisible(contentPanel, false)
-- 在内容面板中添加一些示例内容
local text1 = GUI:Text_Create(contentPanel, "text1", 10, 30, 14, "#ffffff", "内容1")
local text2 = GUI:Text_Create(contentPanel, "text2", 10, 60, 14, "#ffffff", "内容2")
local text3 = GUI:Text_Create(contentPanel, "text3", 10, 90, 14, "#ffffff", "内容3")
-- 展开动作函数
local function expandAction()
-- 显示内容面板
GUI:setVisible(contentPanel, true)
GUI:setOpacity(contentPanel, 0) -- 先设置为完全透明
-- 执行淡入和移动动画
GUI:runAction(contentPanel,
GUI:ActionSequence(
GUI:ActionFadeTo(0.3, 255), -- 淡入效果
GUI:CallFunc(function()
SL:print("展开完成")
end)
)
)
-- 同时执行位置移动动画
local startY = -50
local endY = 150
GUI:setPosition(contentPanel, 150, startY)
-- 使用动作序列实现平滑移动
GUI:runAction(contentPanel,
GUI:ActionSequence(
GUI:ActionMoveTo(0.3, 150, endY)
)
)
-- 切换按钮显示
GUI:setVisible(btnExpand, false)
GUI:setVisible(btnCollapse, true)
end
-- 收起动作函数
local function collapseAction()
-- 执行淡出动画
GUI:runAction(contentPanel,
GUI:ActionSequence(
GUI:ActionFadeTo(0.3, 0),
GUI:CallFunc(function()
-- 动画完成后隐藏面板
GUI:setVisible(contentPanel, false)
SL:print("收起完成")
end)
)
)
-- 同时执行位置移动动画
local currentPos = GUI:getPosition(contentPanel)
GUI:runAction(contentPanel,
GUI:ActionSequence(
GUI:ActionMoveTo(0.3, 150, -50)
)
)
-- 切换按钮显示
GUI:setVisible(btnExpand, true)
GUI:setVisible(btnCollapse, false)
end
-- 绑定按钮点击事件
GUI:addOnClickEvent(btnExpand, function()
SL:print("点击展开按钮")
expandAction()
end)
GUI:addOnClickEvent(btnCollapse, function()
SL:print("点击收起按钮")
collapseAction()
end)
-- 添加展开时的缩放效果(可选)
local function addScaleEffect(button)
GUI:addOnClickEvent(button, function()
-- 点击时先缩小再恢复
GUI:runAction(button,
GUI:ActionSequence(
GUI:ActionScaleTo(0.1, 0.9),
GUI:ActionScaleTo(0.1, 1.0)
)
)
end)
end
-- 为两个按钮添加点击缩放效果
addScaleEffect(btnExpand)
addScaleEffect(btnCollapse)
-- 初始化位置
GUI:setPosition(btnExpand, 100, 100)
GUI:setPosition(btnCollapse, 100, 100)
GUI:setPosition(contentPanel, 150, -50) -- 初始在屏幕外
SL:print("按钮收起展开脚本加载完成")
```
**功能说明:**
1. **展开效果**:
- 面板从上方滑入(位置动画)
- 从透明到不透明(淡入效果)
- 展开按钮切换为收起按钮
2. **收起效果**:
- 面板向上滑出(位置动画)
- 从不透明到透明(淡出效果)
- 收起按钮切换为展开按钮
3. **额外效果**:
- 按钮点击时有缩放反馈
- 动画完成后有打印提示
**使用技巧**:
- 可以调整`ActionFadeTo`和`ActionMoveTo`的时间参数(0.3秒)来控制动画速度
- 可以修改起始和结束位置来适应不同的界面布局
- 可以在`CallFunc`回调中添加其他逻辑处理
这个脚本使用了浮生梦老师课程中教的动作系统,实现了平滑的展开收起效果,让你的界面更加生动有趣!
← 返回问答库