动作
本文主要记录了cocos creator ,动作系统相关的 组件 属性 和方法 动作系统很适合做简单的运动,复杂的运动交给动画
runAction执行动作 // 需要Action类对象(下面的动作类型全是Action类的子类)
一. 即时动作
1.动作 //返回ActionInstant类型实例对象
2. 即时动作类 ActionInstant
二.时间间隔动作
1.动作 //返回ActionInterval类型实例对象
2. 时间间隔动作类型 ActionInterval
3.常用间隔动作
① moveTo(时间,Vec2向量) //移动到
② moveTo(时间,Vec2向量) //移动多少
③ rotateTo(时间,角度x,角度y)旋转到 //角度可写一个
④ rotateBy(时间,角度x,角度y)旋转多少 //角度可写一个
⑤ 缩放到
⑥ 缩放多少
⑦ 淡入淡出
⑧ 改变透明度
三.容器动作(命令队列)
- sequence命令队列 顺序执行
2. spawn 同时执行
四. 缓动动作
1.缓动动作(动作非线性)
//适用于ActionEase 子类对象 ActionEase 是ActionInterval的子类
//缓动动作是对ActionInterval动作的修饰
2. 先介绍ActionEase 子类对象
3 .缓动动作对象的方法:
easing(easeObj对象) //参数是easeObj对象
4. easeObj对象: //这是一种大类 里面有好多类
缓动动作线形图
5. 常用的缓动和easeObj对象 (每个都常用,参考上图)
① 由慢到快 //参数:rate变化率
② 快速超出目标,慢慢回弹
五. 停止调用动作
- 停止某个动作
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。