首先得知道CCSpriteFrameCache为精灵帧缓存,那它该怎么用呢?有是什么时候该使用的呢?
CCSpriteFrameCache::sharedSpriteFrameCache()->addSpriteFramesWithFile("Background1.plist");//通过单例创建一个单例,然后使用方法addSpriteFramesWithFile(该方法为通过一个文件添加精灵帧),我们可以把事先准备的好的图片用texturepacker 工具制作成plist和pvr.ccz文件,网上有详细的说明为什么制作动画时候回把图片制作成pvr.ccz以及plist文件,以及texturepacker工具怎么使用我不详细说明了。
如果你只是想通过pvr.ccz文件和plist创建一个精灵的话方法如下:
CCSize winSize =CCDirector::sharedDirector()->getWinSize();
CCSpriteFrameCache::sharedSpriteFrameCache()->addSpriteFramesWithFile("Background1.plist");//这个是你通过texturepacker软件生成的plist文件
CCSprite *backGroundSprite = CCSprite::createWithSpriteFrameName("dl_menu_01a.png");//这个是你通过texturepacker软件生成的图片,这个软件可以生成很多类型的文件,有png,pvr.ccz等。
backGroundSprite->setAnchorPoint(ccp(0,0));
this->addChild(backGroundSprite, -1);
如果你想通过pvr.ccz文件和plist创建一个动画的话方法如下:
//将plist属性文件中的每一帧加载到SpriteFrameCache中
CCSpriteFrameCache::sharedSpriteFrameCache()->addSpriteFramesWithFile("npc.plist");
CCAnimation *animationnpc = CCAnimation::create();//创建一个动画对象
animationnpc->setDelayPerUnit(0.08f);//设置动画的播放间隔时间
char str[10];
for(int i = 1; i <= 4; i++)
{
sprintf(str, "a0%d.png",i);
CCSpriteFrame* frame = CCSpriteFrameCache::sharedSpriteFrameCache()->spriteFrameByName(str);
animationnpc->addSpriteFrame(frame);
}
CCSprite * spritenpc=CCSprite::createWithSpriteFrame( CCSpriteFrameCache::sharedSpriteFrameCache()->spriteFrameByName("a01.png"));
spritenpc->runAction(CCRepeatForever::create(
CCAnimate::create(animationnpc)));
spritenpc->setPosition(ccp(100,100));
this->addChild(spritenpc,3);