当前位置:首页 > 技术手札 > 正文内容

cocos creator的Action类整理

秋风渡红尘7年前 (2018-12-05)技术手札1604
文章来源:https://blog.csdn.net/cchgood/article/details/80930764

Action类

Action类是所有动作类型的基类 
并且Action有两个类别 
1、瞬时完成(ActionInstant) 
2、非瞬时完成,即到完成时需要一定的时间ActionIntervial

相关API 功能
cc.moveTo() 移动到目标位置
cc.moveBy() 移动指定的距离
cc.rotateTo() 旋转到目标角度
cc.rotateBy() 旋转到指定角度
cc.scaleTo() 缩放到目标大小
cc.scaleBy() 缩放到指定大小
cc.fadeIn() 淡入效果(透明度小于255才能体现效果)
cc.fadeOut() 淡出效果(透明度大于0才能体现效果)
cc.fadeTo() 修改透明度到目标值
cc.callFun() 执行回调函数
cc.delayTime() 动作延迟时间
cc.sequence() 顺序执行动作,创建的动作将按顺序依次运行
cc.repeat() 重复动作,可以按一定次数重复一个动
cc.repeatForever() 一直重复动作
Action.easeIn() 由慢到快的缓动对象
Action.easeOut() 由快到慢的缓动对象
stopAction() 停止并移除指定的动作
stopAllActions() 停止并且移除所有正在运行的动作列表。

以上的Action API均需要node.runAction()结合使用 
使用演示:

//move
var movTo=cc.moveTo(1,cc.p(100,100));
this.node.runAction(movTo);//第一个参数是移动到目标位置的时间
var movBy=cc.moveBy(1,cc.p(100,100));
this.node.runAction(movBy);
//rotate
var rTo=cc.rotateTo(1, 180);//第一个参数也是时间参数,将节点旋转180°
this.node.runAction(rTo);
var rBy=cc.rotateBy(1,180);//该节点再旋转180°
this.node.runAction(rBy);
//scale
var scTo = cc.scaleTo(1,2);//将节点缩放到2倍
this.node.runAction(scTo);
var scBy = cc.scaleBy(1,2);//将节点在原来的基础上再乘2
this.node.runAction(scBy);
//fade
var faO = cc.fadeOut(2);//2秒淡出
this.node.runAction(faO);
var faI = cc.fadeIn(2);//2秒淡入
this.node.opacity = 0;//调节透明度
this.node.runAction(faI);
var faTo = cc.fadeTo(1, 128);
this.node.runAction(faTo);
//callfun
var callF = cc.callFunc(function(){
    cc.log("function callback!!");
}.bind(this));
cc.node.runAction(callF);
//seq
var seqA = cc.seq([movTo,rTo,faO]);
cc.node.runAction(seqA);
//repeat
var rep = cc.repeat(seqA,2);
cc.node.runAction(rep);
var repF = cc.repeatForever(seqA);
cc.node.runAction(repF);
//回弹特效
var m = cc.moveTo(1, 100, 0).easing(cc.easeBackOut());
this.node.runAction(m);
//转动特效
var r = cc.rotateBy(3, 360).easing(cc.easeCubicActionOut());
var rf = cc.repeatForever(r);
this.node.runAction(rf);
//delay延时
var time = cc.delayTime(2);
var mov = cc.moveBy(2,cc.p(100,100));
var fun = cc.callFunc(function(){
    this.node.removeFromParent();
}.bind(this));
var seq1 = cc.sequence([time, mov, fun]);
this.node.runAction(seq);
//this.node.stopAllActions();  


扫描二维码推送至手机访问。

版权声明:本文由咿呀贝发布,如需转载请注明出处。

本文链接:https://www.yiyabei.cn/?id=34

标签: cocoscreator
分享给朋友:

相关文章

QT在windows环境下QIcon不显示

QT在windows环境下QIcon不显示

QT设计窗口程序,在linux下QIcon能够正常显示图标,在windoows下无法显示图标。 经检查路径没有问题,最终解决方法是 先构建-˃执行qmake,然后在重新run。 图标终于正常显示,完毕!...

360随身wifi 3代当作无线网卡无法联网

360随身wifi 3代当作无线网卡无法联网

前置条件: 无线网卡硬件 360随身WIFI 3代 驱动...

关于UG NX8.0/8.5二次开发dll签名失败的问题

关于UG NX8.0/8.5二次开发dll签名失败的问题

使用vc++二次开发,正版UG NX加载DLL时会提示图像未加载…… 了解为正版UG加载二次开发的dll需要签名。 签名过程中出现以下问题: Signing fails because the fo...

ubuntu把iso镜像文件添加为更新源

ubuntu把iso镜像文件添加为更新源

环境:vmware12 + win7物理机 + ubuntu16.04虚拟机 iso是用vm直接挂载到ubuntu的,其实是想用iso来升级系统,结果不知道怎么执行升级,反而是一大堆问题。 正确添加源的方法是:...

cocos creator逐个输出字体实现方式

cocos creator逐个输出字体实现方式

方法一: for str += string 特点是每次循环前面的字符都要重新输出一次,容易造成闪烁。 方法二: for location[i].t...