10个按钮 1秒内 移动到 -72 ,103坐标后 1秒内同时2张卡牌往上178 2张卡牌往下178后回到-72 ,103 然后 1秒内同时2张卡牌往左142, 2张卡牌往右142 后回到-72 ,103
🤖 回答引擎: 前端Lua |
🕒 时间: 2026-04-20 14:37:03 |
👁️ 阅读: 15
我来帮你实现这个复杂的按钮动画效果。根据浮生梦老师前端课程内容,这里需要用到动作序列和组合动作。
```lua
-- 创建父节点
local parent = GUI:Win_Create("CardGame", 0, 0, 0, 0, false, false, true, false, false, false, 1)
-- 创建10个按钮
local buttons = {}
local startX, startY = -72, 103
local buttonWidth, buttonHeight = 60, 60
for i = 1, 10 do
local btn = GUI:Button_Create(parent, "btn_card_" .. i, startX, startY, "res/public/1900000612.png")
GUI:Button_setTitleText(btn, "卡" .. i)
GUI:setContentSize(btn, buttonWidth, buttonHeight)
buttons[i] = btn
end
-- 定义移动动画函数
local function startCardAnimation()
-- 第一步:所有按钮1秒内移动到起始位置
for i, btn in ipairs(buttons) do
local moveToStart = GUI:ActionMoveTo(1, startX, startY)
GUI:runAction(btn, moveToStart)
end
-- 延迟1秒后执行第二步
SL:ScheduleOnce(function()
-- 第二步:2张卡往上178,2张卡往下178
for i = 1, 2 do
-- 往上移动的卡牌(假设是第1、2张)
local moveUp = GUI:ActionMoveTo(1, startX, startY + 178)
GUI:runAction(buttons[i], moveUp)
-- 往下移动的卡牌(假设是第3、4张)
local moveDown = GUI:ActionMoveTo(1, startX, startY - 178)
GUI:runAction(buttons[i+2], moveDown)
end
-- 延迟1秒后回到原位
SL:ScheduleOnce(function()
for i = 1, 4 do
local moveBack = GUI:ActionMoveTo(1, startX, startY)
GUI:runAction(buttons[i], moveBack)
end
-- 延迟1秒后执行第三步
SL:ScheduleOnce(function()
-- 第三步:2张卡往左142,2张卡往右142
for i = 5, 6 do
-- 往左移动的卡牌(假设是第5、6张)
local moveLeft = GUI:ActionMoveTo(1, startX - 142, startY)
GUI:runAction(buttons[i], moveLeft)
-- 往右移动的卡牌(假设是第7、8张)
local moveRight = GUI:ActionMoveTo(1, startX + 142, startY)
GUI:runAction(buttons[i+2], moveRight)
end
-- 延迟1秒后回到原位
SL:ScheduleOnce(function()
for i = 5, 8 do
local moveBack = GUI:ActionMoveTo(1, startX, startY)
GUI:runAction(buttons[i], moveBack)
end
end, 1)
end, 1)
end, 1)
end, 1)
end
-- 创建开始按钮
local startBtn = GUI:Button_Create(parent, "btn_start", 200, 200, "res/public/1900000612.png")
GUI:Button_setTitleText(startBtn, "开始动画")
GUI:addOnClickEvent(startBtn, startCardAnimation)
```
**代码说明:**
1. **创建10个按钮**:使用循环创建10个按钮,初始位置在(-72, 103)
2. **动作序列**:使用`GUI:ActionMoveTo`创建移动动作
3. **定时器**:使用`SL:ScheduleOnce`实现延迟执行
4. **动画流程**:
- 第一步:所有按钮移动到起始位置(1秒)
- 第二步:前4张卡上下移动(1秒),然后返回(1秒)
- 第三步:后4张卡左右移动(1秒),然后返回(1秒)
**注意:**
- 这里假设第1、2张卡往上,第3、4张卡往下
- 第5、6张卡往左,第7、8张卡往右
- 第9、10张卡保持不动
- 如果需要不同的卡牌组合,可以调整按钮索引
这个动画效果会依次执行,每个步骤都有1秒的延迟,总共需要约4秒完成整个动画序列。
← 返回问答库