【cocos2dx之CCAnimation、CCAnimate、CCAnimationCache使用】
来源:互联网 发布:vpn软件有哪些 编辑:程序博客网 时间:2024/05/17 04:26
一个精灵的动画该怎么理解?
我的理解就是场景中原本死气沉沉的精灵在原地动起来了。
CCAnimation和CCAnimate的官方源代码解释是下面这段话【版本cocos2dx-2.2.2】
/** A CCAnimation object is used to perform animations on the CCSprite objects.The CCAnimation object contains CCAnimationFrame objects, and a possible delay between the frames.You can animate a CCAnimation object by using the CCAnimate action. Example:[sprite runAction:[CCAnimate actionWithAnimation:animation]];*/class CC_DLL CCAnimation : public CCObject{public:/*** @js ctor*/CCAnimation();/*** @js NA* @lua NA*/~CCAnimation(void);public:/** Creates an animation@since v0.99.5*/static CCAnimation* create(void);/* Creates an animation with an array of CCSpriteFrame and a delay between frames in seconds.The frames will be added with one "delay unit".@since v0.99.5@js create*/static CCAnimation* createWithSpriteFrames(CCArray* arrayOfSpriteFrameNames, float delay = 0.0f);/* Creates an animation with an array of CCAnimationFrame, the delay per units in seconds and and how many times it should be executed.@since v2.0*/static CCAnimation* create(CCArray *arrayOfAnimationFrameNames, float delayPerUnit, unsigned int loops);static CCAnimation* create(CCArray *arrayOfAnimationFrameNames, float delayPerUnit) {return CCAnimation::create(arrayOfAnimationFrameNames, delayPerUnit, 1);}/** Adds a CCSpriteFrame to a CCAnimation.The frame will be added with one "delay unit".*/void addSpriteFrame(CCSpriteFrame *pFrame);/** Adds a frame with an image filename. Internally it will create a CCSpriteFrame and it will add it.The frame will be added with one "delay unit".Added to facilitate the migration from v0.8 to v0.9.* @js addSpriteFrameWithFile*/void addSpriteFrameWithFileName(const char *pszFileName);/** Adds a frame with a texture and a rect. Internally it will create a CCSpriteFrame and it will add it.The frame will be added with one "delay unit".Added to facilitate the migration from v0.8 to v0.9.*/void addSpriteFrameWithTexture(CCTexture2D* pobTexture, const CCRect& rect);/*** @lua NA*/bool init();/** Initializes a CCAnimation with frames and a delay between frames@since v0.99.5@lua NA*/bool initWithSpriteFrames(CCArray *pFrames, float delay = 0.0f);/** Initializes a CCAnimation with CCAnimationFrame@since v2.0@lua NA*/bool initWithAnimationFrames(CCArray* arrayOfAnimationFrames, float delayPerUnit, unsigned int loops);/*** @js NA* @lua NA*/virtual CCObject* copyWithZone(CCZone* pZone);/** total Delay units of the CCAnimation. */CC_SYNTHESIZE_READONLY(float, m_fTotalDelayUnits, TotalDelayUnits)/** Delay in seconds of the "delay unit" */CC_SYNTHESIZE(float, m_fDelayPerUnit, DelayPerUnit)/** duration in seconds of the whole animation. It is the result of totalDelayUnits * delayPerUnit */CC_PROPERTY_READONLY(float, m_fDuration, Duration)/** array of CCAnimationFrames */CC_SYNTHESIZE_RETAIN(CCArray*, m_pFrames, Frames)/** whether or not it shall restore the original frame when the animation finishes */CC_SYNTHESIZE(bool, m_bRestoreOriginalFrame, RestoreOriginalFrame)/** how many times the animation is going to loop. 0 means animation is not animated. 1, animation is executed one time, ... */CC_SYNTHESIZE(unsigned int, m_uLoops, Loops)};
/** @brief Animates a sprite given the name of an Animation */class CC_DLL CCAnimate : public CCActionInterval{public:/*** @js ctor*/CCAnimate();/*** @js NA* @lua NA*/~CCAnimate();/** initializes the action with an Animation and will restore the original frame when the animation is over */bool initWithAnimation(CCAnimation *pAnimation);/*** @js NA* @lua NA*/virtual CCObject* copyWithZone(CCZone* pZone);virtual void startWithTarget(CCNode *pTarget);virtual void stop(void);virtual void update(float t);virtual CCActionInterval* reverse(void);public:/** creates the action with an Animation and will restore the original frame when the animation is over */static CCAnimate* create(CCAnimation *pAnimation);CC_SYNTHESIZE_RETAIN(CCAnimation*, m_pAnimation, Animation)protected:std::vector<float>* m_pSplitTimes;int m_nNextFrame;CCSpriteFrame* m_pOrigFrame;unsigned int m_uExecutedLoops;};
看着有点迷茫呀!!理一理思路。
其实我们在运用的过程中遵循以下步骤就行了。
一、创建CCAnimation
1.通过CCAnimationCache创建
CCAnimationCache *animationcache = CCAnimationCache::sharedAnimationCache();animationcache->addAnimationsWithFile("animations/animations-2.plist");CCAnimation *animation = animationcache->animationByName("dance_1");//刚开始不知道这个参数是哪里来的,其实是plist里面的,你用记事本打开就可以看得到,它是一个动画标识animation->setRestoreOriginalFrame(true);2.通过CCAnimation的create***函数或是add***函数创建
用create***函数创建
CCArray *animations = CCArray::createWithCapacity(14); char str[100]={0};for(int i = 1; i< 14; i++){sprintf(str,”grossini_dance_%02d.png”,i); CCSpriteFrame *frame = frameCache->spriteFrameByName(str); animations->addObject(frame); }CCAnimation* animation = CCAnimation::createWithSpriteFrames(animations,2.0f);当然,你也可以通过add***函数创建
CCAnimation* animation = CCAnimation::create();for( int i=1;i<15;i++) { char szName[100] = {0}; sprintf(szName, "Images/grossini_dance_%02d.png", i); animation->addSpriteFrameWithFileName(szName); //加载动画的帧 }二、通过CCAnimation创建CCAnimate
这个就比较简单了,一般就是
CCAnimate *animate = CCAnimate::create(animation);三、通过CCSprite的runaction绑定CCAnimate到精灵。
也比较简单
sprite->runAction(CCSequence::create(animate, animate->reverse(), NULL));
参考文章:
http://blog.csdn.net/ganpengjin1/article/details/17349353
http://blog.csdn.net/ganpengjin1/article/details/19121539
http://cocos2d.9tech.cn/news/2014/0303/39946.html
http://blog.csdn.net/hbhhww/article/details/13289319
0 0
- 【cocos2dx之CCAnimation、CCAnimate、CCAnimationCache使用】
- cocos2dX 之CCAnimation/CCAnimate
- cocos2dx 运动+旋转动画 CCSequence CCAnimation CCAnimate CCMoveTo CCCallFuncN
- cocos2dx基础篇(24)——基本动画CCAnimation/CCAnimate
- CCAnimation 和 CCAnimate 区别
- CCAnimate和CCAnimation区别
- 使用CCAnimate、CCAnimation、CCTextureCache、CCTexture2D来实现动画效果
- cocos2dx --- 笔记 容易弄混了四个类,CCSpriteFrame CCAnimationFrame CCAnimation CCAnimate
- Cocos2d-x动画CCAnimate CCAnimation
- Cocos2d-x动画CCAnimate CCAnimation
- cocos2dx之CCAnimate创建一个动画
- cocos2dx看懂CCAnimate
- cocos2dx 源码学习2 CCAnimationCache
- cocos2dxz之CCAnimationCache
- cocos2dxz之CCAnimationCache
- CCAnimationCache
- CCAnimationCache
- 创建 和使用 CCAnimation
- 【原创】《Linux高级程序设计》杨宗德著 - 进程管理与程序开发 - 守护进程
- Jmeter测试结果分析
- redis入门资源收集汇总
- 接下来的学习计划
- applet打印黑白打印功能
- 【cocos2dx之CCAnimation、CCAnimate、CCAnimationCache使用】
- ssh +git 配置
- Redrain个人维护并使用的DuiLib和UiLib库源码下载地址
- 因为有个程序员老公,我也加入大家庭了~
- java语言将一个字符串集合按GBK编码(简体中文按拼音顺序)排序
- cJSON库(构建json与解析json字符串)-c语言
- 互联网如何招生
- sql预编译和注入
- iOS开发-计算label文本大小尺寸高度宽度