cocos2d之Animate帧动画

来源:互联网 发布:三品软件plm 编辑:程序博客网 时间:2024/05/09 07:25

1、第一种方式(多张精灵图片)

CCSize s = CCDirector::sharedDirector()->getWinSize();
 CCSprite *sp = CCSprite::create("1.png");//第一帧
 sp->setPosition(ccp(s.width/2,s.height/2));
 addChild(sp);
 
 CCAnimation *animation = CCAnimation::create();
 char str[50]={0};
 for(int i=0; i<6; i++)
 {
  sprintf(str,"%d.png",i);
  animation->addSpriteFrameWithFileName(str); //添加播放的每帧图片
 }
 animation->setDelayPerUnit(3.0f/6);//设置每帧的时间,这里是一共执行3秒,共有6帧,所以每帧是0.5秒
 animation->setRestoreOriginalFrame(true); //设置回到第一帧
 sp->runAction(CCAnimate::create(animation)); //永久的执行:sp->runAction(CCRepeatForever::create(CCAnimate::create(animation)));

 

2.第二种方式

1、用TexturePacker打图软件把所有图片打到一张图片上面,打完之后会生成一个plist文件和含有所有图片的一张大图

2、

CCSize size = CCDirector::sharedDirector()->getWinSize();
 CCSpriteFrameCache *cache = CCSpriteFrameCache::sharedSpriteFrameCache();
 cache->addSpriteFramesWithFile("text.plist");//打图后产生的plist文件

 CCSprite *sp = CCSprite::createWithSpriteFrameName("1.png");//第一帧
 sp->setPosition(ccp(size.width/2,size.height/2));
 addChild(sp);

 CCArray *arr = CCArray::createWithCapacity(14);
 char str[10];
 for (int i=0; i<14; i++)
 {
  sprintf(str,"%d.png",i);
  CCSpriteFrame *frame = cache->spriteFrameByName(str);
  arr->addObject(frame);
 }
 CCAnimation *animation = CCAnimation::createWithSpriteFrames(arr,0.2f);//保存的帧序列
 sp->runAction(CCRepeatForever::create(CCAnimate::create(animation)));

 

 

0 0
原创粉丝点击