[LUA-print] ----------------------------------------
Warning: cc.EaseExponentialOut:create argument 2 is invalid native object(nullptr)
[LUA-print] ----------------------------------------
[LUA-print] LUA ERROR: ASSERT FAILED ON LUA EXECUTE: action c
🤖 回答引擎: 前端Lua |
🕒 时间: 2026-04-27 01:51:25 |
👁️ 阅读: 12
这个错误是因为 `GUI:ActionEaseExponentialOut()` 函数的参数不正确。根据浮生梦老师前端课程内容,`GUI:ActionEaseExponentialOut()` 需要传入一个有效的动作对象作为参数,但你传入的 `moveAction_Up` 和 `moveAction_Down` 可能已经为空或无效。
问题出现在第74行附近(代码中标注错误的位置),当你调用 `GUI:ActionEaseExponentialOut(moveAction_Up)` 时,`moveAction_Up` 可能已经失效。另外,`GUI:Timeline_MoveTo()` 的回调函数中直接使用 `GUI:ActionEaseExponentialOut()` 也是不正确的,因为 `GUI:ActionEaseExponentialOut()` 返回的是一个新的动作对象,需要配合 `GUI:runAction()` 来执行。
正确的写法应该是:
```lua
-- 错误写法:
GUI:Timeline_MoveTo(npc.ui[panelName], {x = 5, y = 0}, 0.35, function()
GUI:ActionEaseExponentialOut(moveAction_Up) -- 这里只是创建动作,没有执行
end)
-- 正确写法:
GUI:Timeline_MoveTo(npc.ui[panelName], {x = 5, y = 0}, 0.35, function()
local easeAction = GUI:ActionEaseExponentialOut(moveAction_Up)
GUI:runAction(npc.ui[panelName], easeAction)
end)
```
但是,更严重的问题是 `moveAction_Up` 和 `moveAction_Down` 这两个动作对象在 `GUI:Timeline_MoveTo()` 执行时可能已经失效了。你需要确保动作对象在回调函数中仍然有效。
建议修改为:
```lua
GUI:addOnClickEvent(npc.ui.Button_1, function()
-- ... 之前的代码不变 ...
local moveActionUp_1 = GUI:ActionMoveTo(0.2, 5, 35)
local moveActionDown_1 = GUI:ActionMoveTo(0.3, 5, 0)
local moveAction_Up = GUI:ActionSequence(moveActionUp_1, moveActionDown_1)
-- 直接执行缓动动作,不需要在 Timeline_MoveTo 回调中执行
local easeAction = GUI:ActionEaseExponentialOut(moveAction_Up)
GUI:runAction(npc.ui[panelName], easeAction)
end)
```
另外,检查一下 `npc.ui[panelName]` 这个控件是否有效,如果控件为空也会导致动作对象创建失败。
下次写代码时要注意动作对象的生命周期,不懂的地方可以问浮生梦尊师!
← 返回问答库