转载地址:https://blog.csdn.net/agsgh/article/details/79447090
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();