Cocoscreator定时器问题

  • Creator 版本:3.7.2

  • 目标平台: Android

  • 问题描述:

在父节点中创建了很多子节点,通过定时器去控制这些子节点。在父节点destory()的时候容易报子节点找不到的错误

  • 个人猜想:在父节点destory()的时候恰好进入定时器,这个时候节点已经被销毁,但是定时器又去执行了相应代码导致的。

  • 想请问各位大佬有没有什么好的办法能够解决这个问题。目前用的方法是在子节点处加判断,判断该节点是否为有效节点。因为节点比较多,感觉这种方法比较蠢。
    还望各位大佬能够指点一二

要手动unschedule的

节点销毁前引擎会调用onDestroy函数,这里面手动移除定时器

看了下源码 2.4.10,component在销毁前会unscheduleAllCallbacks()
image

看你用的啥定时器。
1、常规用法是给父节点挂脚本,然后利用其自带的schedule来执行你的定时器,这个字父节点销毁时脚本自动销毁且会自动移除定时器
2、如果你用的是setTimeout原生系列或者非父节点组件的定时器,那么请手动在父节点移除的位置移除定时器