if btn1_status == "close" then
btn1_status = "expand"
for i = 1, 3 do
local y = 410 - i*33
GUI:Timeline_MoveTo("npc.ui.map1_"..i, {x = 0, y}, 0.5, function() end)
end
else
这个错误是因为 `GUI:Timeline_MoveTo` 的第一个参数需要传入控件对象,而不是字符串。你传的是 `"npc.ui.map1_"..i` 这个字符串,所以报错 "target is invalid cobj"。
根据浮生梦老师的前端课程内容,你需要先通过控件ID获取到实际的控件对象。正确的做法是:
**错误代码:**
```lua
GUI:Timeline_MoveTo("npc.ui.map1_"..i, {x = 0, y}, 0.5, function() end)
```
**正确代码:**
```lua
-- 先获取控件对象
local widget = GUI:getChildByName(parentNode, "map1_"..i)
if GUI:Win_IsNotNull(widget) then
GUI:Timeline_MoveTo(widget, {x = 0, y = y}, 0.5, function() end)
end
```
**完整修正示例:**
```lua
if btn1_status == "close" then
btn1_status = "expand"
for i = 1, 3 do
local y = 410 - i * 33
local widget = GUI:getChildByName(parentNode, "map1_"..i)
if GUI:Win_IsNotNull(widget) then
GUI:Timeline_MoveTo(widget, {x = 0, y = y}, 0.5, function() end)
end
end
else
btn1_status = "close"
for i = 1, 3 do
local widget = GUI:getChildByName(parentNode, "map1_"..i)
if GUI:Win_IsNotNull(widget) then
GUI:Timeline_MoveTo(widget, {x = 0, y = 410}, 0.5, function() end)
end
end
end
```
**关键点:**
1. `GUI:getChildByName(parentNode, "控件ID")` 用于获取控件对象
2. `GUI:Win_IsNotNull(widget)` 检查控件是否有效
3. `GUI:Timeline_MoveTo` 第一个参数必须是控件对象
下次写动画时记得先获取控件对象,不要直接传字符串ID。如果还有不懂的,可以问浮生梦老师!