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 @   wanhong  阅读(395)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
历史上的今天:
2019-01-18 vim基本操作
2019-01-18 es6 很简单
点击右上角即可分享
微信分享提示