Cocos2d-x 序列帧动画

前端之家收集整理的这篇文章主要介绍了Cocos2d-x 序列帧动画前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

创建方法

手动添加序列帧到Animation类

在创建Animation实例时会用到以下几个接口:

  • addSpriteFrame添加精灵帧到Animation实例
  • setDelayUnits,设置每一帧持续时间,以秒为单位
  • setRestoreOriginalFrame,设置是否在动画播放结束后恢复到第一帧
  • clone,克隆一个该Animation实例
auto animation = Animation::create();
    for( int i=1;i<15;i++)
    {
        char szName[100] = {0};
        sprintf(szName,"Images/grossini_dance_%02d.png",i);
        animation->addSpriteFrameWithFile(szName);
    }
    // should last 2.8 seconds. And there are 14 frames.
    animation->setDelayPerUnit(2.8f / 14.0f);
    animation->setRestoreOriginalFrame(true);

    auto action = Animate::create(animation);
    _grossini->runAction(Sequence::create(action,action->reverse(),NULL));

使用文件初始化Animation类

在使用AnimationCache类时会用到以下几个接口:

  • addAnimationsWithFile添加动画文件到缓存,plist文件
  • getAnimation,从缓存中获取动画对象
  • getInstance获取动画缓存实例对象

使用文件添加方法只需将创建好的plist文件添加到动画缓存里面,plist文件里包含了序列帧的相关信息。再用动画缓存初始化Animation实例,用Animate实例来播放序列帧动画。

auto cache = AnimationCache::getInstance();
    cache->addAnimationsWithFile("animations/animations-2.plist");
    auto animation2 = cache->getAnimation("dance_1");

    auto action2 = Animate::create(animation2);
    _tamara->runAction(Sequence::create(action2,action2->reverse(),NULL));

动画缓存

通常情况下,对于一个精灵动画,每次创建时都需要加载精灵帧,按顺序添加到数组,再创建对应动作类,这是一个非常烦琐的计算过程。对于使用频率高的动画,比如走路动画,将其加入缓存可以有效降低每次创建的巨大消耗。由于这个类的目的和缓存内容都非常简单直接,所以其接口也是最简单了的,如下所示:

  • static AnimationCache* getInstance(),全局共享的单例
  • void addAnimation(Animation *animation,const std::string& name)添加一个动画到缓存
  • void addAnimationsWithFile(const std::string& plist)添加动画文件到缓存
  • void removeAnimation(const std::string& name),移除一个指定的动画
  • Animation* getAnimation(const std::string& name),获得事先存入的动画

在内存警告时我们应该加入如下的清理缓存操作,推荐先清理动画缓存,然后清理精灵帧缓存,最后是纹理缓存。按照引用层级由高到低,以保证释放引用有效。

void releaseCaches()

{ AnimationCache::destroyInstance(); SpriteFrameCache::getInstance()->removeUnusedSpriteFrames(); TextureCache::getInstance()->removeUnuserdTextures(); }
原文链接:https://www.f2er.com/cocos2dx/339450.html

猜你在找的Cocos2d-x相关文章