【cocos2.4.x】问个定时器问题

cc.tween 和 this.scheduleOnce,cc.animation 以及spine动画的 时间是一致的么?

最近在做一个统一动画系统,我会用插件去读取cc.animtion 和 spine动画的duration时间,我发现都是用的s数去计算,这样的化可以不用去监听spine的播放回调,直接读取时间,用scheuleOnce去执行动画。

在web端我试了下是一致的。app端同事说可能帧率不一致的时候,spine的时间和定时器的不一致,所以想讨论下是不是一致的

理论上来说应该没问题,比如本来spine应该在0.2秒播完的,但是由于上一帧卡了一下导致可能在0.3秒播完了。但是因为spine和定时器都是基于update来计算时间的,所以理论上来说要延迟的话都应该延迟,但是实际上可能会出现各种状况,比如spine被移除了,理论上不应该回调了,但是由于使用了定时器导致报错

:rofl:不考虑移除的情况下,时间一致的话,监听回调和用定时器效果应该差不多吧

不可能不考虑移除的,比如场景转换,比如父节点移除,定时器会出很多问题的

你想一下,spine和spine回调分开意味着以后进行暂停恢复以及转换父节点等等都需要多处理一个定时器,维护这么多地方意味着容易出错的,设计的原则应该是减少耦合,这样才方便开发啊

你使用scheuleOnce就得做容错处理,我不推荐使用scheuleOnce这类计时,很容易出bug,尽量少用,