我所理解的TextureCache,SpriteFrameCache,AnimationCache
最近在自学cocos2d-x,在这总结下cocos2d-x中缓存的使用 不管是游戏背景还是人物精灵还是动画,都是一张张的图片,要想使用这些图片,我想cocos2d-x 底层是应用openGL纹理贴图方式,将图片加载如内存。以上三种缓存机制,都是为了减少内存的多次读写,来提高游戏效率(本人菜鸟,有不对的望指出–) 1、TextureCache: Texture2D *texture = Director::getInstance()->getTextureCache()->addImage(texturePath.c_str());
纹理缓存是通过这句将图片加入缓存,生成Texture2D对象,此时就可通过次对象创建精灵 这里的图片可以是单个精灵图片,也可以是plist文件对应的拼图, SpriteFrameCache: CCSpriteFrameCache::sharedSpriteFrameCache()->addSpriteFramesWithFile("*.plist");
跟进这句源码,可以看到也是先使用TextureCache缓存加载图片 addSpriteFramesWithDictionary(dict,texture);
此句是plist文件与 Texture2D对象的对应,plist文件中记录了拼图中你所要找的图片的信息,包括位置、大小,名字等。 CCSprite::createWithSpriteFrame(CCSpriteFrameCache::sharedSpriteFrameCache()->getSpriteFrameByName("background.png"));
来创建精灵,比起一张一张图片创建要快的多,因为图片是一次加载进来的嘛。 AnimationCache: void AnimationCache::addAnimation(Animation *animation,const std::string& name)
{
_animations.insert(name,animation);
}
就是把创建好的动作序列,加入一个MAP,name为MAP的key值, CCAnimation* panimation = CCAnimationCache::sharedAnimationCache()->animationByName("keyAnimotion");
然后: CCAnimate* aimate = CCAnimate::create(panimation);
创建动画 CCAnimate 才是真正的动画, psprite->runAction(aimate );
运行动画。 好了,很简单的描述,因为我理解的也不够深刻,在此记下,以后备用。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |