cocos creator 基础一文通(四) ---动作

907 阅读2分钟

动作

本文主要记录了cocos creator ,动作系统相关的 组件 属性 和方法 动作系统很适合做简单的运动,复杂的运动交给动画

runAction执行动作 // 需要Action类对象(下面的动作类型全是Action类的子类)

一. 即时动作

1.动作 //返回ActionInstant类型实例对象
2. 即时动作类 ActionInstant

二.时间间隔动作

1.动作 //返回ActionInterval类型实例对象
2. 时间间隔动作类型 ActionInterval
3.常用间隔动作
① moveTo(时间,Vec2向量) //移动到
② moveTo(时间,Vec2向量) //移动多少
③ rotateTo(时间,角度x,角度y)旋转到 //角度可写一个
④ rotateBy(时间,角度x,角度y)旋转多少 //角度可写一个
⑤ 缩放到
⑥ 缩放多少
⑦ 淡入淡出
⑧ 改变透明度

三.容器动作(命令队列)

  1. sequence命令队列 顺序执行
2. spawn 同时执行

四. 缓动动作

1.缓动动作(动作非线性)
//适用于ActionEase 子类对象 ActionEase 是ActionInterval的子类
//缓动动作是对ActionInterval动作的修饰
2. 先介绍ActionEase 子类对象
3 .缓动动作对象的方法:
easing(easeObj对象) //参数是easeObj对象
4. easeObj对象: //这是一种大类 里面有好多类
缓动动作线形图
5. 常用的缓动和easeObj对象 (每个都常用,参考上图)
① 由慢到快 //参数:rate变化率
② 快速超出目标,慢慢回弹
五. 停止调用动作
  1. 停止某个动作
2. 停止所有动作
3. 按标签停止动作
var self_rotate=cc.rotateBy(3,360);
self_rotate.setTag(1);
this.node.stopActionByTag(1);
六. 暂停/恢复动作
七. 延时
cc.delayTime();
例子: 等待→淡出→删除 一气呵成

八. 动作回调函数 //其实相当于把回调做成了一个动作. 放在动作序列中执行.

动作回调可以用以下的方式声明:
var finished = cc.callFunc(this.myMethod, this, opt);
cc.callFunc 第一个参数是处理回调的方法,即可以使用 CCClass 的成员方法,也可以声明一个匿名函数:
var finished = cc.callFunc(function () {
    //doSomething
}, this, opt);
第二个参数指定了处理回调方法的 context(也就是绑定 this),第三个参数是向处理回调方法的传参。您可以这样使用传参:
var finished = cc.callFunc(function(target, score) {
    this.score += score;
}, this, 100);//动作完成后会给玩家加100分
在声明了回调动作 finished 后,您可以配合 cc.sequence 来执行一整串动作并触发回调:
var myAction = cc.sequence(cc.moveBy(1, cc.v2(0, 100)), cc.fadeOut(1), finished);
在同一个 sequence 里也可以多次插入回调:
var myAction = cc.sequence(cc.moveTo(1, cc.v2(0, 0)), finished1, cc.fadeOut(1), finished2); //finished1, finished2 都是使用 cc.callFunc 定义的回调动作
注意: 在 cc.callFunc 中不应该停止自身动作,由于动作是不能被立即删除,如果在动作回调中暂停自身动作会引发一系列遍历问题,导致更严重的 bug。