10个按钮 1秒内 移动到 -72 ,103坐标
🤖 回答引擎: 前端Lua |
🕒 时间: 2026-04-20 14:31:10 |
👁️ 阅读: 11
根据浮生梦老师前端课程内容,要实现10个按钮在1秒内移动到指定坐标,可以使用动作序列和定时器控制。以下是完整代码示例:
```lua
-- 创建父窗口
local parent = GUI:Win_Create("GMMain", 0, 0, 0, 0, false, false, true, false, false, false, 1)
-- 目标坐标
local targetX = -72
local targetY = 103
-- 存储所有按钮的表格
local buttons = {}
-- 创建10个按钮
for i = 1, 10 do
-- 创建按钮,使用指定图片
local btn = GUI:Button_Create(parent, "btn_" .. i, 100 + (i-1)*60, 200, "res/public_win32/1900000612.png")
-- 设置按钮文字
GUI:Button_setTitleText(btn, "按钮" .. i)
-- 添加到按钮表格
buttons[i] = btn
-- 添加点击事件
GUI:addOnClickEvent(btn, function()
SL:print("按钮" .. i .. "被点击了!")
end)
end
-- 定义移动函数
local function moveAllButtons()
for i, btn in ipairs(buttons) do
-- 检查按钮是否有效
if not GUI:Win_IsNull(btn) then
-- 创建移动动作:1秒内移动到目标位置
local moveAction = GUI:ActionMoveTo(1, targetX, targetY)
-- 执行动作
GUI:runAction(btn, moveAction)
end
end
end
-- 延迟执行移动,确保界面创建完成
SL:ScheduleOnce(function()
moveAllButtons()
end, 0.1)
-- 也可以创建一个触发按钮
local triggerBtn = GUI:Button_Create(parent, "trigger_btn", 100, 300, "res/public_win32/1900000612.png")
GUI:Button_setTitleText(triggerBtn, "开始移动")
GUI:addOnClickEvent(triggerBtn, function()
moveAllButtons()
end)
```
**代码说明:**
1. **创建父窗口**:首先创建父窗口作为所有按钮的容器
2. **创建10个按钮**:使用循环创建10个按钮,每个按钮有唯一的ID
3. **设置目标坐标**:目标位置为(-72, 103)
4. **移动动作**:使用`GUI:ActionMoveTo(1, targetX, targetY)`创建1秒的移动动作
5. **执行动作**:通过`GUI:runAction()`执行移动动作
6. **延迟执行**:使用`SL:ScheduleOnce()`确保界面加载完成后再移动
**注意:**
- 每个按钮必须有唯一ID,避免冲突
- 使用`GUI:Win_IsNull()`检查控件是否存在
- 按钮图片使用指定的`res/public_win32/1900000612.png`
- 移动动作时间设置为1秒,符合要求
如果需要更复杂的移动效果(如依次移动、抛物线移动等),可以进一步使用动作序列组合。
← 返回问答库