在游戏制作的过程中,动作也是很重要的一个部分,比如角色的跳跃,移动等等
cocos2d-html5提供了很多动作,调用起来十分方便,喜欢用cocos2d这套引擎就是觉得在场景跳转和动作方面省了很多事,而且效果也很好。
比较常用的有这么几个:
移动到 cc.MoveTo.create
移动 cc.MoveBy.create
缩放到 cc.ScaleTo.create
缩放 cc.ScaleBy.create
旋转到 cc.RotateTo.create
旋转 cc.RotateBy.create
跳跃到 cc.JumpTo.create
跳跃 cc.JumpBy.create
渐变出现 cc.FadeIn.create
渐变消失 cc.FadeOut.create
说明一下To和By的区别吧,To就是参数中要达到的那个位置或者效果,在设定的时间参数内完成,而By是每一步相对进行的,举个例子说吧
cc.MoveTo是“移动到这里",而cc.MoveBy则是“相对于之前点再移动”,通俗一点就是说这里需要两个坐标pos1(x1,y1),pos2(x2,y2),如果是CCMoveTo的话,就是将对象由pos1移动到pos2,而cc.MoveBy则是说对象的终坐标是在pos1的基础上再加上(矢量相加)pos2,终坐标pos3=pos1+pos2。
同时需要注意的是,带By方法的都是支持reverse()方法,可以获取其反向的动作。
var actionTo = cc.MoveTo.create(2, cc.p(300, 300)); sp.runAction(actionTo);当然我比较懒,也觉得一个动作要定一个变量过于麻烦,所以可以整合到一起写,比如这样
sp.runAction(cc.MoveTo.create(2, cc.p(300, 300)));
var action = cc.Spawn.create( cc.JumpBy.create(2, cc.p(300, 0), 50, 4), cc.RotateBy.create(2, 720)); sp.runAction(action);
var action = cc.Sequence.create( cc.RotateBy.create(3, 360), cc.FadeOut.create(2)) );
var act1 = cc.RotateTo.create(0.5, 90); var act2 = cc.RotateTo.create(0.5, 0); var seq = cc.Sequence.create(act1, act2); var rep1 = cc.RepeatForever.create(seq); var rep2 = cc.Repeat.create((seq.clone()), 4);动作也是可以支持复制的,clone()方法
var action = cc.Sequence.create( cc.MoveBy.create(1, cc.p(100, 0)), cc.CallFunc.create(this.onCallback1, this)); sp.runAction(action);
onCallback1:function () { //doThings(); },
var action = cc.Sequence.create( cc.DelayTime.create(1), cc.CallFunc.create(this.repeatForever)); sp.runAction(action);