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

 

posted @ 2023-01-18 10:07  wanhong  阅读(288)  评论(0编辑  收藏  举报