【Cocos2d-html5游戏引擎学习笔记(9)】Action系统动作

在游戏制作的过程中,动作也是很重要的一个部分,比如角色的跳跃,移动等等


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)));

动作也是可以支持同时执行的
cc.Spawn.create

var action = cc.Spawn.create(
            cc.JumpBy.create(2, cc.p(300, 0), 50, 4),
            cc.RotateBy.create(2, 720));

sp.runAction(action);

或者依次执行
cc.Sequence.create
var action = cc.Sequence.create(
            cc.RotateBy.create(3, 360),
            cc.FadeOut.create(2)) 
        );

或者重复执行动作
cc.Repeat.create
也可以永久重复执行
cc.RepeatForever.create
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()方法

动作中可以创建一个回调动作,比如移动动作完了之后我需要知道然后做别的事情
cc.CallFunc.create
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();
    },

也可以让动作延迟一段时间进行
cc.DelayTime.create
var action = cc.Sequence.create(
            cc.DelayTime.create(1),
            cc.CallFunc.create(this.repeatForever));

sp.runAction(action);

基本的动作差不多这些就足够了,当然还有一些复杂的,可以翻翻看test例子中的代码学习,动作中还有一个动作曲线和动作管理,后面的文章再介绍吧

写到这里我才想起来,还没有介绍精灵的自定义动画。呵呵,下一章简单介绍下吧~

你可能感兴趣的:(JavaScript,cocos2d-html5)