cocos creator tween
先思考三个问题
问题1: cc.tween很早就有action了,为什么还要tween?
问题2: cc.tween中的call是否就是tweenlite库中的回调?
cc.tween(node).to(0.5, {x:100).call(()=>{console.log('complete')}).start()
问题3: 同一个节点如果执行两次tween,是会被覆盖,还是被忽略,还是同步执行?
cc.tween(node).by(0.5, {x:100}).start()
cc.tween(node).by(0.5, {y:100}).start()
如果这三个问题你们都清楚了,基本上就证明对cocos creator的tween很熟悉
首先tween也是一种action
tween封装了一些方法(to, by, set, delay, call, show, hide, removeSelf, sequence, parallel)
让api更接近于'标准', 并且不仅局限于node
所以问题1,就很清楚了
继续弄懂问题2
上面提到了cc.tween封装的方法中,有call, 应该是表示回调.
是表示前面的的action执行完成了的回调,还是所有的行为执行完成后的回调?
为了清楚问题,必须翻源码。。。
action相关的源码很简单, 逻辑也很少.
CCActionManager拥有对象, 对象拥有actions, actions是for循环执行的.
cc.tween(node).to(0.5, {x:100).call(()=>{console.log('complete')}).start() 实际上是个序列形为
还有一个问题3
action的行为都是在actionmanager统一管理的
同一个对象只会存一个actions, 所以问题3是同时执行
思考:为处理sequence,parallel, 而设计actionOneTwo的目的是什么?
总结:
Game拥有director
director拥有actionManager
actionManager拥有对象列表
对象拥有action列表
驱动就是director的update