Cocos2d-x学习笔记(四)浅析动作类CCAction(3)

来源:互联网 发布:谭浩强c语言入门下载 编辑:程序博客网 时间:2024/05/22 21:05

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

原创粉丝点击