Cocos2d-x 序列帧动画
发布时间:2020-12-14 17:07:34 所属栏目:百科 来源:网络整理
导读:创建方法 手动添加序列帧到Animation类 在创建Animation实例时会用到以下几个接口: addSpriteFrame ,添加精灵帧到Animation实例 setDelayUnits ,设置每一帧持续时间,以秒为单位 setRestoreOriginalFrame ,设置是否在动画播放结束后恢复到第一帧 clone
创建方法手动添加序列帧到Animation类在创建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类时会用到以下几个接口:
使用文件添加的方法只需将创建好的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));
动画缓存通常情况下,对于一个精灵动画,每次创建时都需要加载精灵帧,按顺序添加到数组,再创建对应动作类,这是一个非常烦琐的计算过程。对于使用频率高的动画,比如走路动画,将其加入缓存可以有效降低每次创建的巨大消耗。由于这个类的目的和缓存内容都非常简单直接,所以其接口也是最简单了的,如下所示:
在内存警告时我们应该加入如下的清理缓存操作,推荐先清理动画缓存,然后清理精灵帧缓存,最后是纹理缓存。按照引用层级由高到低,以保证释放引用有效。 void releaseCaches()
{ AnimationCache::destroyInstance(); SpriteFrameCache::getInstance()->removeUnusedSpriteFrames(); TextureCache::getInstance()->removeUnuserdTextures(); }
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐
热点阅读