cocos2d 加载 plist文件(帧动画)

将图片整合成一个大的图片,缩小图片占用,就有了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);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值