现在的位置: 首页 > 综合 > 正文

cocos2d-x 菜鸟实习生学习篇(七) 逐帧动画(下)

2014年06月09日 ⁄ 综合 ⁄ 共 1522字 ⁄ 字号 评论关闭

今天再来添加一种逐帧动画的方法,或者说这不是方法,而是封装。是的,你没看错,是封装!!!

这几天自己在做一个小游戏,用来差不多一周多的时间。我想也就实习生才能有这么多工作时间让你去搞这些自己的游戏吧?

游戏的制作很多都是参考 《ios 5 cocos2d 游戏开发实战》 这本书里的一些代码风格,感觉写的不错。缺点就是这本书都是obj-c 的语言,而我只会c++,可以想象移植过程的压力是多大?!(开玩笑的)。

好了,直接把我写的逐帧动画的封装贴上来吧

先看头文件:

#ifndef __ANIMATION_H__
#define __ANIMATION_H__

#include "cocos2d.h"

using namespace cocos2d;

class QuickAnim : public CCLayer
{
public:
	static CCAnimation* createAnim(char *fileName,char* eachFileName,int frameCount,float delay);
};

#endif

然后是.cpp

/*
该封装使用方法:
在需要使用动画的时候调用createAnim函数,
createAnim(char *fileName,char* eachFileName,int frameCount,float delay)
第一个参数是fileName.plist,第二个参数是.plist里的单个图片的名字再加%d.png,第三个参数是总共是几帧的动画,第四个参数是每帧切换时间。
eg:
CCSprite* player = CCSprite::create();
this->addChild(player,2);  
player->setPosition(ccp(size.width/2,size.height/2));
player->runAction(CCRepeatForever::create( CCAnimate::create(QuickAnim::createAnim("sprite/player.plist","player%d.png",8,0.1f)) ) );
*/

#include "Animation.h"

CCAnimation* QuickAnim::createAnim(char *fileName,char* eachFileName,int frameCount,float delay)
{
	CCSpriteFrameCache* cache = CCSpriteFrameCache::sharedSpriteFrameCache();
    cache->addSpriteFramesWithFile(fileName);
	 
	CCArray* animFrames = CCArray::createWithCapacity(frameCount);
    char str[100] = {0};
    for(int i = 0; i < frameCount; i++) 
    {
        sprintf(str, eachFileName,(i+1));
        CCSpriteFrame *frame = cache->spriteFrameByName(str);
        animFrames->addObject(frame);
    }
	CCAnimation* animation = CCAnimation::createWithSpriteFrames(animFrames,delay);

	return animation;
}

好了,就这样啦。哈哈。

想起当初刚来实习的时候,不懂什么叫封装,继承之类的,现在不只懂了,还能自己写一个,虽然很简单。但是很满足。
话说快过年了。boss打算让我继续学下cocosBuild,下次更新可能就是关于这方面的学习啦。

抱歉!评论已关闭.