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

cocos creator的Action类整理

秋风渡红尘7年前 (2018-12-05)技术手札1198
文章来源: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();  


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

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

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

标签: cocoscreator
分享给朋友:

相关文章

ubuntu下笔记本触摸板的禁用

ubuntu下笔记本触摸板的禁用

        有件事必须承认,Ubuntu对笔记本触摸板的控制没有Windows管理方便,这仅仅出于个人观点,因为在Linux的道路上,我还是新手中的新手。...

工作站T7810重装系统注意事项

工作站T7810重装系统注意事项

        dell的工作站T7810(Dell Precision Tower 7810)由于使用了磁盘阵列技术,在重装系统时发现会找不到任何驱动设备。...

win7升级ie8至ie11后无法打开

win7升级ie8至ie11后无法打开

win7升级ie8至ie11后无法打开,表现为 1、双击无反应,进程中没有ie进程。 2、卸载ie11后,连ie8也无法使用路。 3、检查windows功能,ie是启用的。 4、想起来用...

AUTOCAD2018无法启动及启动后界面闪烁

AUTOCAD2018无法启动及启动后界面闪烁

AUTOCAD2018安装完毕后启动时无法进入主界面就报错“autocad application 已停止工作”。 用管理员身份或者兼容模式运行,会在进入主界面之前自动退出程序。 通过visualsutio调试,发现问题出现在nvwgf...

局域网和外网多重网络同时使用

局域网和外网多重网络同时使用

要点: 1、ip、子网掩码都使用内网; 2、网关保证空白; 3、设置静态路由。 具体操作: 1、保证完成了上述1、2两条操作; 2、设置静态路由...

ubuntu QT5.11.1链接MYSQL数据库出错的问题。

ubuntu QT5.11.1链接MYSQL数据库出错的问题。

编译后链接数据库时提示 QSqlDatabase: QMYSQL driver not loaded QSqlDatabase: available drivers: QSQLITE,QMYSQL……...