cocos2d-x为我们提供了相当方便的动作制作。主要有两种:瞬时动作(基类CCActionInstanse)和延时动作(基类CCActionInterval)。我估计大部分人关心的都是延时动作,因为有动感,才能称为动作嘛。
延时动作中,有很多种类型:移动(CCMoveTo,CCMoveBy),旋转(CCRotateTo,CCRotateBy),变形(CCScaleTo,CCScaleBy),跳跃(CCJumpTo,CCJumpBy)等动作。具体可以到http://www.cocos2d-x.org/embedded/cocos2d-x/d7/d12/classcocos2d_1_1_c_c_action.html查看。
实现动作的方法:
1,创建动作绑定结点(代码来自官方的Test工程)
2,定义动作
CCActionInterval actionTo = CCMoveTo.actionWithDuration(2, new CCPoint(s.width - 40, s.height - 40));
3,动作执行
上面的就可以完成一个简单的移动动作。
通过研究Test工程。动作的完成主要是由每个动作类的actionWithDuration(在规定条件内完成动作),和reverse(恢复,反过来执行一遍动作)来完成。
比如上面的定义动作的方法,就是在2秒内移动到距离右上角(40,40)的地方。如果还要返回到原位,用原来的轨迹。那么修改为如下:
动作的合成主要靠CCSequence(类似队列,按照顺序执行动作),CCRepeatForever(无限重复动作),CCRepeat(有限重复动作)等完成。
CCSequence用法:
动作执行顺序就是先执行actionTo,再执行action.reverse()这个动作,其实CCSequence也有Reverse这个方法。那动作的执行顺序就是从后面到前面了。
CCRepeatForever用法:
例子:m_grossint.runAction(CCRepeatForever.actionWithAction(CCSequence.actions(actionTo,actionTo.reverse())));
CCRepeat的用法和CCRepeatForever的用法类型。就是多了个time(次数)这个参数。
那么,复杂的动作怎么实现呢,那得靠你的想象力了。怎么把简单的动作组合到一块。
复杂的动作基本都是靠CCSequence,CCRepeat等组合起来使用,具体例子可以看官方的test工程。里面提供了大量的例子。我就不在这里展示了。