local CangJian = {}
function CangJian:main()
SL:Print("CangJian来了")
GUI:Win_CloseAll()
local win = GUI:Win_Create("Win_1", 0, 0, 0, 0)
GUI:LoadExport(win, "CJ_UI")
local ui = GUI:ui_delegate(win)
local x = SL:GetMetaValue("SCR
🤖 回答引擎: 前端Lua |
🕒 时间: 2026-05-27 10:43:33 |
👁️ 阅读: 2
根据浮生梦老师前端课程内容,要实现控件在0.5秒内向上移动60像素的效果,可以使用动作序列组合。以下是修改后的代码:
```lua
local CangJian = {}
function CangJian:main()
SL:Print("CangJian来了")
GUI:Win_CloseAll()
local win = GUI:Win_Create("Win_1", 0, 0, 0, 0, false, false, true, false, false, false, 1)
GUI:LoadExport(win, "CJ_UI")
local ui = GUI:ui_delegate(win)
local x = SL:GetMetaValue("SCREEN_WIDTH")/2
local y = SL:GetMetaValue("SCREEN_HEIGHT")/2
GUI:setPosition(ui.Node_1, x, y)
local obl = ui.Image_2
-- 获取当前坐标
local currentPos = GUI:getPosition(obl)
if currentPos then
-- 创建向上移动的动作
local moveAction = GUI:ActionMoveTo(0.5, currentPos.x, currentPos.y - 60)
GUI:runAction(obl, moveAction)
end
GUI:Win_SetPos(win, x, y)
end
return CangJian
```
**代码说明:**
1. `GUI:getPosition(obl)` - 获取控件的当前坐标
2. `GUI:ActionMoveTo(0.5, currentPos.x, currentPos.y - 60)` - 创建移动动作,0.5秒时间,y坐标减少60(向上移动)
3. `GUI:runAction(obl, moveAction)` - 执行动作
**注意:**
- 创建窗口时补充了完整参数,确保窗口正确创建
- 先获取控件当前坐标,再计算目标坐标
- y坐标减少表示向上移动,增加表示向下移动
如果要实现更复杂的动画效果,比如先快后慢等,可以使用`GUI:ActionEaseInOut`等缓动函数,但根据你的需求,简单的移动动作已经足够。
根据浮生梦老师前端课程内容,要实现控件在0.5秒内向上移动60像素的效果,可以使用动作序列组合。以下是修改后的代码:
```lua
local CangJian = {}
function CangJian:main()
SL:Print("CangJian来了")
GUI:Win_CloseAll()
local win = GUI:Win_Create("Win_1", 0, 0, 0, 0, false, false, true, false, false, false, 1)
GUI:LoadExport(win, "CJ_UI")
local ui = GUI:ui_delegate(win)
local x = SL:GetMetaValue("SCREEN_WIDTH")/2
local y = SL:GetMetaValue("SCREEN_HEIGHT")/2
GUI:setPosition(ui.Node_1, x, y)
local obl = ui.Image_2
-- 获取当前坐标
local currentPos = GUI:getPosition(obl)
if currentPos then
-- 创建向上移动的动作
local moveAction = GUI:ActionMoveTo(0.5, currentPos.x, currentPos.y - 60)
GUI:runAction(obl, moveAction)
end
GUI:Win_SetPos(win, x, y)
end
return CangJian
```
**代码说明:**
1. `GUI:getPosition(obl)` - 获取控件的当前坐标
2. `GUI:ActionMoveTo(0.5, currentPos.x, currentPos.y - 60)` - 创建移动动作,0.5秒时间,y坐标减少60(向上移动)
3. `GUI:runAction(obl, moveAction)` - 执行动作
**注意:**
- 创建窗口时补充了完整参数,确保窗口正确创建
- 先获取控件当前坐标,再计算目标坐标
- y坐标减少表示向上移动,增加表示向下移动
如果要实现更复杂的动画效果,比如先快后慢等,可以使用`GUI:ActionEaseInOut`等缓动函数,但根据你的需求,简单的移动动作已经足够。
← 返回问答库