将图片整合成一个大的图片,缩小图片占用,就有了plist文件和png配套文件。
cocos加载plist文件有2种方式(查询的)
1、若采用如下方式进行加载的话,你的plist文件中必须含有animations节点,否则加载失败
auto cache = AnimationCache::getInstance();
cache->addAnimationsWithFile("animations/animations-2.plist");
2、手动添加的方法需要将每一帧要显示的精灵有序添加到Animation类中,并设置每帧的播放时间,让动画能够匀速播放。另外,还要通过setRestoreOriginalFrame
来设置是否在动画播放结束后恢复到第一帧。创建好Animation实例后,需要创建一个Animate实例来播放序列帧动画。(摘抄自网络)
/×注意添加搜索路径,如果不是资源根目录,很可能加载不成功×/
FileUtils::getInstance()->addSearchPath("Game/anamate/");
CCSpriteFrameCache *frameCache = CCSpriteFrameCache::sharedSpriteFrameCache();
frameCache->addSpriteFramesWithFile("Emoji.plist");e
/×逐帧将png加入到缓存中×/
Vector<SpriteFrame*> animations;
char str[100] = { 0 };
for (int i = 1; i <= 3; i++)
{
sprintf(str, "1_%d.png", i);
CCSpriteFrame *frame = frameCache->spriteFrameByName(str);
animations.pushBack(frame);
}
/×间隔0.2s,2次循环×/
cocos2d::CCAnimation* my_animation = CCAnimation::createWithSpriteFrames(animations, 0.2f, 2);
CCAnimationCache::sharedAnimationCache()->addAnimation(my_animation, "smile");
cocos2d::CCAnimate* my_ani = CCAnimate::create(my_animation);
cocos2d::Sprite × my_test_sp = CCSprite::create();
#if 1
my_test_sp->setSpriteFrame("1_1.png");
#else
CCSpriteFrame* frame = frameCache->spriteFrameByName("1_1.png");
my_test_sp->setDisplayFrame(frame);
#endif
my_test_sp->setPosition(500, 500);
addChild(my_test_sp);
my_test_sp->runAction(Sequence::create(my_ani, CCHide::create(), nullptr));
以上是完整的加载和播放
但是如果之后过程中还要重复不定期启用的话(调用)
cocos2d::CCAnimate * my_ani = CCAnimate::create(my_animation);
my_test_sp->runAction(Sequence::create(my_ani, CCHide::create(), nullptr));
my_test_sp->setVisible(true);