题记:写这篇博客要主是加深自己对动画图片的认识和总结实现算法时的一些验经和训教,如果有错误请指出,万分感谢。
闲暇之余,和大家讲讲cocos2d-x 创立帧动画吧,
确实的说是从一个plist文件读取创立多个帧动画,
那么首先我们要用工具将多个帧动画成生一个plist文件(手写plist就太脑残了),
且这个plist里头包含了多个帧动画息信,然后我们再到程序中去用调刚成生的plist,
我用的工具是红孩儿工具箱,大家可以去下载用用,正方现在我要用的功能它是都有了。
首先我们将所需的全部的单图片合拼为一张大图(切/拼图栏),然后存保出导.plist 即 PackSpr.plist,
2 动画辑编栏,Root下定绑新图片Image,右键Image,名字命名为die,创立定固帧关键帧动画,这时候是单图片成生,查找图块,
图片始起和图片结束为一个动画,数值是1而后连续值且图片名字缀后也要如此,第一个动画就弄好了存保die.plist,第二个动画也是一样做法,不过图片始起是上一个图片结束+1了再存保为walk.plist,
我们想想,还是多个plist啊,是啊,其实我们还需要一个骤步才能只成生一个plist,那就是我们在成生2个动画文件plist的时候附带还成生了2个ani文件,只要将这2个ani文件合成一个plist可即,我们打开角色辑编一栏,在空白区域右键,创立新角色类,取名为RoleAni,添加新角色,也取名为RoleAni,最后逐一添加动作倒入我们的动画文件ani吧分别为die和walk,好了存保为RoleAni.plist 这时候plist就成告功大了,最后我们在程序中去用调吧
CCSpriteFrameCache *frameCache = CCSpriteFrameCache::sharedSpriteFrameCache(); frameCache->addSpriteFramesWithFile("PackSpr.plist"); // Purge previously loaded animation CCAnimationCache::purgeSharedAnimationCache(); CCAnimationCache *animCache = CCAnimationCache::sharedAnimationCache(); // Add an animation to the Cache animCache->addAnimationsWithFile("RoleAni.plist"); CCSize winSize = CCDirector::sharedDirector()->getWinSize(); CCAnimation *die = animCache->animationByName("die"); die->setRestoreOriginalFrame(true); CCAnimate *animdie = CCAnimate::create(die); CCSequence *seqdie = (CCSequence*)CCSequence::create(animdie, NULL); CCSprite *sprdie = CCSprite::create(); CCSpriteFrame *framedie = frameCache->spriteFrameByName("role_10.bmp"); sprdie->setDisplayFrame(framedie); sprdie->setPosition(ccp(winSize.width/2-100, winSize.height/2)); sprdie->setScale(0.5); addChild(sprdie); // run the animation sprdie->runAction(seqdie); CCAnimation *walk = animCache->animationByName("walk"); walk->setRestoreOriginalFrame(true); CCAnimate *animwalk = CCAnimate::create(walk); CCSequence *seqwalk = (CCSequence*)CCSequence::create(animwalk, NULL); CCSprite *sprwalk = CCSprite::create(); CCSpriteFrame *framewalk = frameCache->spriteFrameByName("role_1.bmp"); sprwalk->setDisplayFrame(framewalk); sprwalk->setPosition(ccp(winSize.width/2, winSize.height/2)); addChild(sprwalk); // run the animation sprwalk->runAction(seqwalk);
文章结束给大家分享下程序员的一些笑话语录: 马云喜欢把自己包装成教主,张朝阳喜欢把自己包装成明星,李彦宏喜欢把自己包装成的很知性,丁磊喜欢把自己包装的有创意,李开复总摆出一副叫兽的样子。看来的。其实我想说,缺啥补啥,人之常情。