帧动画缓存
吧帧动画存储在内存里面,供使用
以下是Lite2D的实现
#include"AnimationCache.h"
AnimationCache*AnimationCache::getInstance()
{
static AnimationCache*ins = nullptr;
if (ins == nullptr)
{
ins = new AnimationCache;
}
return ins;
}
AnimationCache::AnimationCache()
{
}
void AnimationCache::addAnimation(const std::string &name, Animation*animation)
{
_map.insert(std::pair<std::string, Animation*>(name, animation));
animation->retain();
}
void AnimationCache::removeAllAnimations()
{
for (const auto&ani : _map)
{
ani.second->release();
}
_map.clear();
}
void AnimationCache::removeAnimation(const std::string &name)
{
auto iter = _map.find(name);
if (iter == _map.end())
{
return;
}
(*iter).second->release();
_map.erase(iter);
}
Animation*AnimationCache::getAnimation(const std::string&name)
{
auto iter = _map.find(name);
if (iter == _map.end())
{
return nullptr;
}
return (*iter).second;
}