【1】动作管理类CCActionManager:
动作管理类CCActionManager是一个管理所有动作的单例,可以对动作进行一系列的操作,如:添加动作、删除动作、暂停动作、重启动作,这个单例可以通过CCDirector::sharedDirector()->getActionManager()来获得。事实上前面所说的 runAction方法只是将行为对象添加进CCActionManager的执行队列。
CCActionManager的用法很简单,只是通过一些函数管理一些动作而已,CCActionManager的主要函数为:
addAction方法: 为指定目标添加动作
removeAllAction方法: 删除所有动作
removeAction方法: 删除传入的动作
removeActionByTag方法: 通过标签删除动作
getActionByTag方法: 通过标签获取动作
pauseTarget方法: 暂停目标动作
resumeTarget方法: 重启目标动作
【2】网格动作CCGrid3D:
网格动作也是实现一些动作特效,主要基于网格实现。和基本动作的使用非常类似,需要注意的是在使用网格之前需要取消OpenGL的深度检测,调用语句:
CCDirector::sharedDirector()->setDepthTest(false);
其具体子类可参考《Cocosd-x权威指南》,实例可参考TestCpp相关源码。
【3】动画的制作与使用:
Cocos2d-x中有一种动作可以用来实现动画——动画动作CCAnimate。当然执行动画动作需要动画资源,动画资源可通过动画类CCAnimation来加载。创建动画需要动画帧,可通过单张图片来创建,亦可通过精灵帧来创建。为了缓存所有的动画和动画帧,需要使用CCAnimationCache类,它是一个单例,可由CCAnimationCache::sharedAnimationCache()获取。弄懂test项目的SpriteTest文件下的实例便知道怎么使用了,下面是部分代码(省略相关定义及操作):
/*获取精灵帧缓存*/
CCSpriteFrameCache *frameCache = CCSpriteFrameCache::sharedSpriteFrameCache();
CCArray* animFrames = CCArray::createWithCapacity(15);//用于存放精灵帧
char str[100] = {0};
for(int i = 1; i < 15; i++)
{
sprintf(str, "grossini_dance_%02d.png",i);
/*通过图片路径获取精灵帧对象*/
CCSpriteFrame *frame = frameCache->spriteFrameByName(str); animFrames->addObject(frame);
}
/*通过一系列精灵帧创建动画*/
CCAnimation *animation = CCAnimation::createWithSpriteFrames(animFrames, 0.2f);
// Add an animation to the Cache
CCAnimationCache::sharedAnimationCache()->addAnimation(animation, "dance");
/*创建动画动作*/
CCAnimate *animN = CCAnimate::create(normal);
CCAnimate *animG = CCAnimate::create(dance_grey);
CCAnimate *animB = CCAnimate::create(dance_blue);
/*组成动作系列*/
CCSequence *seq = CCSequence::create(animN, animG, animB, NULL);、
/*执行这一系列动作(动画)*/
grossini->runAction(seq);