1秒有60帧。
大致步骤:
1.先创建SpriteFrame数组
2.然后利用矩形截取或者图片缓冲池创建每一帧并加入数组
3.用Animation完成帧动画的设置,并加入Animate对象
1.利用精灵帧的图片截取矩形来创建
Sprite* sprite = Sprite::create("donhua/1.png");
SpriteFrame* frame = NULL;
Vector<SpriteFrame*>aniframe;
for (int i = 1; i <= 7; i++)
{
frame = SpriteFrame::create(String::createWithFormat("donhua/%d.png", i)
->getCString(), CCRectMake(0, 0, 132, 105));
aniframe.pushBack(frame);
}
CCAnimation* animation = CCAnimation::createWithSpriteFrames(aniframe,0.1f,-1);
//1.图片数组2.帧动画间隔时间3.动画次数,为-1是重复
Animate* animate = Animate::create(animation);
//RepeatForever* forever = RepeatForever::create(animate);
sprite->runAction(animate);
sprite->setPosition(ccp(visibleSize.width / 2, visibleSize.height / 2));
this->addChild(sprite);
2.通过加载图片缓冲池spriteframecache
SpriteFrameCache* cache = SpriteFrameCache::getInstance();
cache->addSpriteFramesWithFile("boy.plist");
Sprite* sprite = Sprite::createWithSpriteFrameName("donhua/1.png");
//当plist添加至缓冲池后,下面创建精灵就可以用createWithSpriteFrameName
SpriteFrame* frame = NULL;
Vector<SpriteFrame*>aniframe;
for (int i = 1; i <= 7; i++)
{
frame = cache->spriteFrameByName(String::createWithFormat("donhua/%d.png", i)
->getCString());
//通过spriteFrameByName获取每一帧动画
aniframe.pushBack(frame);
}
CCAnimation* animation = CCAnimation::createWithSpriteFrames(aniframe,0.1f,-1);
Animate* animate = Animate::create(animation);
//RepeatForever* forever = RepeatForever::create(animate);
sprite->runAction(animate);
sprite->setPosition(ccp(visibleSize.width / 2, visibleSize.height / 2));
this->addChild(sprite);
return true;