/**************************动画****************************/
// 手动创建动画
auto animation = Animation::create();
char szName[10] = { 0 };
for (int i = 1; i <= 8; i++){
sprintf(szName, "s_%d.png", i);
animation->addSpriteFrameWithFile(szName);
}
animation->setLoops(-1); // 设置循环次数,-1代表无限循环
animation->setDelayPerUnit(2.8f / 14.0f); // 每帧间隔时间
animation->setRestoreOriginalFrame(true); // 是否恢复到动画的原始帧
auto action = Animate::create(animation);
// 文件创建动画
auto frameCache = SpriteFrameCache::getInstance();
frameCache->addSpriteFramesWithFile("LoliRun.plist", "LoliRun.png"); // 增加动画plist和png文件
SpriteFrame* frame = NULL;
Vector<SpriteFrame*> frameVec;
for (int i = 1; i <= 8; i++){
frame = frameCache->getSpriteFrameByName(StringUtils::format("s_%d.png", i));
frameVec.pushBack(frame);
}
auto animation2 = Animation::createWithSpriteFrames(frameVec, 0.1, -1); // 参数动画队列,动画每帧间隔,动画执行次数
auto action2 = Animate::create(animation2);
/**********************************************************/
AnimationCache::getInstance()->addAnimation(animation, "Loliruns"); // 将动画命名,加入到AnimationCache中,以后可随时调用
auto animate = Animate::create(AnimationCache::getInstance()->getAnimation("Loliruns")); // 从AnimationCache调用动画名为Loliruns的动画
/******************************设置动画精灵两种方式**********************************/
auto sprite = Sprite::create();
// 方法1:从SpriteFrameCache中根据名字获得对应的精灵帧,再设置
sprite->setSpriteFrame(spriteFrameCache->getSpriteFrameByName("s_1.png"));
// 方法2:从Animation中获得对应的帧,再进行设置
//sprite->setDisplayFrameWithAnimationName("dogs", 0);
sprite->setPosition(Vec2(200, 200));
addChild(sprite);
sprite->runAction(animate);
/**********************************************************************************/