在使用cc.tween的过程中遇到一个问题:
从nodepool中获取一个node,并使用cc.tween进行移动,在cc.tween未结束前发生碰撞事件,放回nodepool,从而导致下次再从nodepool中获取到该node的时继续进行之前未完成的cc.tween,查看api没有直接停止node上cc.tween的方法,stop并不奏效,无奈之下就使用Action动作,因为可以使用node.stopAllActions();
本来打算自己使用Action动作封装一个cc.tween,但是猜想cc.tween是否有可能就是Action之上的封装,就进行了测试,依旧是用cc.tween,从nodepool取出node后,先执行node.stopAllActions(),结果竟然是可以解决以上问题。
从结果来看cc.tween和Action似乎是系出同源,但是又不确定,所以想请各位大佬解惑。
另外如果真的是系出同源的话,希望官方出一个cc.tween(node).stopAllTween()类似的方法,用来停止所有未完成的tween动作,因为官方api中并没有关于node上tween全部停止的方法
可以通过cc.tween.stop这个api去停止某个缓动动作
另外你也可以使用node.stopAllActions,通过这个api来停止node上的所有动作(包括cc.tween缓动动作以及之前动作系统的那些ActionInterval动作)
至于cc.tween和之前的动作系统的关系,文档中说的很清楚了
缓动动作本质上和其他的ActionInterval动作没有什么区别,就是对Action做了一些 API上的封装,你甚至可以将它看作是一个cc.sequence动作(本质上其实就是一个sequence动作),因此也就不存在提供什么特殊类似stopAllTween这样的方法。
就好比之前的动作系统,并不存在类似node.stopAllMoveAction的方法一样
5赞
