反动作即与某个动作相反。比如一个精灵顺时针旋转,而反动作逆时针旋转。
例子 :
var sprite1 = new cc.Sprite('sprite.png');
sprite1.attr({x : 200, y : 200});
this.addChild(sprite1);
var rotateBy = new cc.RotateBy(1, 360);
sprite1.runAction(rotateBy);
var sprite2 = new cc.Sprite('sprite.png');
sprite2.attr({x : 600, y : 200});
this.addChild(sprite2);
var fta = rotateBy.reverse(); //以rotateBy 动作为基础,创建一个反动作
sprite2.runAction(fta);
速度动作则可以改变一个动作的执行速度。
例子 :
var sprite = new cc.Sprite('sprite.png');
sprite.attr({x : 200, y : 200});
this.addChild(sprite);
var rotateBy = new cc.RotateBy(1, 360);
var rea = new cc.RepeatForever(rotateBy);
var speed = new cc.Speed( rea, 1 );
sprite.runAction(speed);
window.setTimeout(function(){ //2秒后调用cc.Speed的setSpeed函数,改变rotateBy的执行速度
speed.setSpeed(2);
}, 2000);
静止动作即什么动作都不执行,相当于一个空动作。主要起到延时作用。
例子 :
var sprite = new cc.Sprite('res/steak.png');
sprite.attr({x:200, y:200});
this.addChild(sprite);
var rotateBy = new cc.RotateBy(1,360);
var jumpTo = new cc.JumpTo(2, cc.p(400, 220), 50, 3);
var dlt = new cc.DelayTime(2); //静止2秒
var seq = new cc.Sequence(rotateBy, dlt, jumpTo); //中间插了一个静止动作,会延时2秒后才执行跳跃动作
sprite.runAction(seq);
例子 :
var sprite = new cc.Sprite('sprite.png');
sprite.attr({x:200, y:200});
this.addChild(sprite);
var func = new cc.CallFunc(function(e){
e.runAction(new cc.FadeOut(3));
alert('外部动作执行完毕');
alert(e === sprite); //e为sprite
});
var rotateBy = new cc.RotateBy(1,360);
var seq = new cc.Sequence(rotateBy, func);
sprite.runAction(seq);
拷贝一个动作
使用clone函数,可以拷贝一个动作。
例子 :
var s1 = new cc.Sprite('sprite.png');
s1.attr({x : 200, y : 200});
this.addChild(s1);
var mt = new cc.MoveBy(1, cc.p(0,600));
var jt = new cc.JumpTo(1, cc.p(600, 220), 50, 5);
var func = new cc.CallFunc(function(e){
e.runAction(new cc.FadeOut(2));
});
var seq = new cc.Sequence(mt, jt, func);
s1.runAction(seq);
var s2 = new cc.Sprite('sprite.png');
s2.attr({x : 600, y : 200});
this.addChild(s2);
var mt_copy = seq.clone(); //拷贝seq动作,seq里面包含的动作也会被拷贝过来
s2.runAction(mt_copy);