cocos2dx ActionAnimate
前言:
animate需要使用CCAnimation对象来进行初始化。该对象是继承CCObject
CCAnimation的构造过程有多种方式,可以通过plist也可以通过直接设置图片的方式。
一、CCAnimationCache:animation的解析器
通过addAnimationsWithFile(const char* plist);可以将plist文件解析出里面的所有animation对象。该plist是存储关于animation的相关对象。
然后通过CCAnimation* animationByName(const char* name);获取到指定的animation对象。
CCAnimationCache *cache = CCAnimationCache::sharedAnimationCache(); cache->addAnimationsWithFile("animations/animations-2.plist"); CCAnimation *animation2 = cache->animationByName("dance_1");
如上所示,则为获取到animation的一般过程。
二、使用CCAnimation::createWithSpriteFrames的方式
跟第一种一样使用plist导入,但是导入的plist存储的不是animation对象,而是一个个的图片对象。
CCSpriteFrameCache通过调用addSpriteFramesWithFile可以将plist文件解析出所有的图片对象。
然后通过CCSpriteFrame* spriteFrameByName(const char *pszName);获取到指定的图片对象。
最后才调用CCAnimation::createWithSpriteFrames
CCAnimate* HelloWorld::createAnimate2() { CCSpriteFrameCache* frameCache = CCSpriteFrameCache::sharedSpriteFrameCache(); frameCache->addSpriteFramesWithFile("boys.plist", "boys.png"); int iFrameNum = 15; CCSpriteFrame* frame = NULL; CCArray* frameArray = CCArray::create(); for (int i = 1; i <= iFrameNum; ++i) { frame = frameCache->spriteFrameByName(CCString::createWithFormat("run%d.png", i)->getCString()); frameArray->addObject(frame); } CCAnimation* animation = CCAnimation::createWithSpriteFrames(frameArray); animation->setLoops(-1); animation->setDelayPerUnit(0.1f); CCAnimate* action = CCAnimate::create(animation); return action; }
如上所示将所有的精灵对象组合成一个数组来构造CCAnimation对象。
可以通过先CCAnimation* create(void);一个空的对象,然后再animation->addSpriteFrame(frame);一个一个加进去也是可以的。
当操作完这些之后记得要为CCAnimation设置循环次数还有每个图片精灵之间的切换时间间隔。
因为CCSpriteFrameCache是单例对象,所以当你导入相同的plist文件两次的时候,它其实只执行一次而已。如下所示当没有找到已经导入过的对应的plist文件才进行导入操作。
void CCSpriteFrameCache::addSpriteFramesWithFile(const char *pszPlist) {if (m_pLoadedFileNames->find(pszPlist) == m_pLoadedFileNames->end()) 。。。。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!