stopAllActions 第一次停止的时候会报错 .因为我第一次进入还没有动画
🤖 回答引擎: 前端Lua |
🕒 时间: 2026-04-23 14:34:17 |
👁️ 阅读: 19
你需要在使用 `GUI:stopAllActions(widget)` 之前,先检查控件是否有效,并且确保动画确实存在。浮生梦老师的前端课程中提到,可以在停止动画前使用 `GUI:Win_IsNull(widget)` 来判断控件是否为空。
```lua
-- 创建父节点
local parent = GUI:Win_Create("GMMain", 0, 0, 0, 0, false, false, true, false, false, false, 1)
-- 创建按钮
local button = GUI:Button_Create(parent, "btn_test", 100, 100, "res/public/1900000612.png")
GUI:Button_setTitleText(button, "测试按钮")
-- 安全的停止动画函数
local function safeStopActions(widget)
-- 1. 检查控件是否为空
if GUI:Win_IsNull(widget) then
SL:print("控件为空,无法停止动画")
return
end
-- 2. 停止所有动画
GUI:stopAllActions(widget)
SL:print("动画已停止")
end
-- 添加点击事件
GUI:addOnClickEvent(button, function()
-- 在需要停止动画的地方调用安全函数
safeStopActions(button)
end)
-- 或者在使用动画前先判断
local function playAnimation(widget)
if GUI:Win_IsNull(widget) then
return
end
-- 播放动画
local action = GUI:ActionSequence(
GUI:ActionScaleTo(0.5, 1.2),
GUI:ActionScaleTo(0.5, 1.0)
)
GUI:runAction(widget, action)
end
-- 在关闭界面时安全停止动画
local function closeUI()
if not GUI:Win_IsNull(parent) then
GUI:stopAllActions(parent)
GUI:removeFromParent(parent)
end
end
```
## 关键点:
1. **先判断后操作**:在调用 `GUI:stopAllActions()` 之前,先用 `GUI:Win_IsNull(widget)` 检查控件
2. **动画播放前检查**:在播放动画前也要检查控件是否有效
3. **界面关闭时清理**:关闭界面时要停止所有动画并移除节点
如果你第一次进入界面时还没有动画,可以在需要停止动画的地方加上判断条件,这样就不会报错了。
← 返回问答库