CocosCreator3.8研究笔记(二十一)CocosCreator Tween系统理解(1)

简介: CocosCreator3.8研究笔记(二十一)CocosCreator Tween系统理解

Cocos Creator 3.x 版本中, Tween系统代替了原来的Action系统。很多朋友不明白Tween到底是什么,Tween原理是什么?怎么使用Tween?


今天就来详细了解一下,希望能帮助到大家加深对Tween的了解,并快速掌握Tween的使用方法。


一、Tween到底是什么?


Tween 又称为缓动系统,可以用于变换位置、旋转、缩放和颜色等常规动画信息,也支持延迟,队列,并行等动作行为。


首先我们来看一段案例代码:

tween(this.node)
//to,在第1秒的时候放大为2倍,位置为(50,50),角度变化到90
.to(1,{scale:2,position:cc.v2(50,50),rotation:90})
//by,在第2秒时,缩放变化了2倍(现在是原始大小的4倍),位置变化了(50,50),现在位置为(100,100)
.by(1,{scale:2, position:cc.v2(50,50)})
//在第3秒时缩放为原始大小,位置设置为(0,0),然后加了一个缓动效果 backOut
.to(1,{scale:1,position:cc.v2(0,0)},{easing:"backOut"})
.start();


通过上面演示的代码,我们可以知道,Tween可以同时设置多个属性, 在调用 start 时会将之前生成的 action 队列重新组合生成一个 cc.sequence 队列,依次执行。


Tween的特点

  • 支持以链式结构的方式创建一个动画序列
  • 不局限于节点上的属性


Tween有2种设置方式

  • to 改变到某个值(绝对值)
  • by 变化值(相对值)


二、Tween 缓动系统原理

为了加深理解,来看一张UML图:



此UML图中,Node(目标节点)、Action(动作) 、ActionManager(动作管理) 类, 相信大家都比较熟悉了,这里就不作介绍。

这里还涉及到一些比较新的内容:Tween 、TweenAction、props 、ITweenOption下面分别介绍。


1、Tween类是干嘛的?

通过上面UML 图的接口,我们可以清晰地看到,Tween其实有两个主要功能:

  • Action创建器,负责Action的创建

在使用的时候,可以添加一个或者多个Action到内部缓冲,也可添加多个Action组合的串行Action或者并行Action。

  • 内部维护一个最终Action,可控制这个Action的启动与停止


Tween类重要成员属性:

  • _target: 目标对象,比如节点。
  • _actions: 类型为Action[],创建过程中的一组Action缓冲。
  • _finalAction: 创建完成之后的最终使用的Action。


Tween类重要接口:

  • target: 设置目标对象
  • delay: 添加一个DelayAction
  • to: 添加一个TweenAction来指定每个属性变换到多少-目标值
  • by: 添加一个TweenAction来指定每个属性变换多少-变化值
  • union: 将缓冲中的多个Action变成一个串行Action
  • sequence: 将指定的多个Action或者Tween变成一个串行Action后添加到缓冲中
  • parallel: 将指定的多个Action或者Tween变成一个并行Action后添加到缓冲中
  • start: 开始运行,此时会创建最终的Action,并且启动此Action
  • stop: 停止Action的运行


2、TweenAction是做什么的?

TweenAction类从ActionInterval派生,UML图中简化成从Action派生,能够针对目标对象的多个任意属性,以指定缓动方式进行变换。

只要目标对象的属性能够直接赋值和取值,这个TweenAction就能够胜任。

前面的Tween类by接口和to接口就是用TweenAction实现。

它的灵活和强大之处在于,不用像以前那样,每个属性都要实现重复代码的Action类。


3、props是什么?

props是TweenAction需要进行变换的属性。

props 本质就是一个键值对数据结构,键为对象的属性名称,值为进行变换的值。

例如:

{ angle: 90, position: v3(200, 200, 0)}


4、ITweenOption接口

ITweenOption接口,其实就是进行变换的缓动方式以及变换过程中的回调,从UML 图中我们也可以看到,

可以指定如下属性:

  • easing: 缓动方式
  • progress: 插值函数,用来自定义缓动方式
  • onStart: 缓动动作启动时的回调函数
  • onUpdate: 缓动动作更新时的回调函数
  • onComplete: 缓动动作完成时的回调函数


三、Tween 的使用


明白了Tween 的原理和重要的接口后,使用就比较简单了。


使用步骤可以简单分为三步:

Step1:创建一个针对目标的Tween对象

let tween = new Tween(this.node);

Step2:添加执行过程

tween.to(1.0, {angle:90,position:v3(100,100,0) });

Step3:开始执行tween对象

tween.start();


相关文章
|
存储
CocosCreator3.8研究笔记(十一)CocosCreator Prefab(预制件)理解
CocosCreator3.8研究笔记(十一)CocosCreator Prefab(预制件)理解
463 0
|
JSON JavaScript 前端开发
CocosCreator3.8研究笔记(四)CocosCreator 脚本说明及使用(上)
CocosCreator3.8研究笔记(四)CocosCreator 脚本说明及使用(上)
467 0
CocosCreator3.8研究笔记(四)CocosCreator 脚本说明及使用(上)
|
API iOS开发 MacOS
CocosCreator3.8研究笔记(九)CocosCreator 场景资源的理解
CocosCreator3.8研究笔记(九)CocosCreator 场景资源的理解
161 0
CocosCreator3.8研究笔记(九)CocosCreator 场景资源的理解
CocosCreator3.8研究笔记(二十一)CocosCreator Tween系统理解(3)
CocosCreator3.8研究笔记(二十一)CocosCreator Tween系统理解
244 0
CocosCreator3.8研究笔记(二十一)CocosCreator Tween系统理解(2)
CocosCreator3.8研究笔记(二十一)CocosCreator Tween系统理解
|
缓存 自然语言处理 BI
CocosCreator3.8研究笔记(二十)CocosCreator UI组件(四)
CocosCreator3.8研究笔记(二十)CocosCreator UI组件(四)
306 0
|
JSON 缓存 前端开发
CocosCreator3.8研究笔记(二十五)CocosCreator 动画系统-2d骨骼动画spine
CocosCreator3.8研究笔记(二十五)CocosCreator 动画系统-2d骨骼动画spine
1039 0
|
缓存 前端开发 算法
CocosCreator3.8研究笔记(十六)CocosCreator 2D对象
CocosCreator3.8研究笔记(十六)CocosCreator 2D对象
320 0
|
前端开发 Android开发
CocosCreator3.8研究笔记(十九)CocosCreator UI组件(三)(3)
CocosCreator3.8研究笔记(十九)CocosCreator UI组件(三)
120 0
|
JavaScript 数据安全/隐私保护 Android开发
CocosCreator3.8研究笔记(十九)CocosCreator UI组件(三)(1)
CocosCreator3.8研究笔记(十九)CocosCreator UI组件(三)
342 0
下一篇
无影云桌面