本文来自http://blog.csdn.net/runaying ,引用必须注明出处!
cocos2d-X 节点(CCSpriteFrameCache.h)API
温馨提醒:为了大家能更好学习,强烈推荐大家看看本人的这篇博客 Cocos2d-X权威指南笔记
从 .list/字典 文件 初始化/删除 sprite Frame
///cocos2d-x-3.0alpha0/cocos2dx/sprite_nodes
//从 .list/字典 文件 初始化/删除 sprite Frame
#ifndef __SPRITE_CCSPRITE_FRAME_CACHE_H__
#define __SPRITE_CCSPRITE_FRAME_CACHE_H__
/*
* 使用此工具创建 sprite frames 、 texture atlas, use this tool:
* http://zwoptex.zwopple.com/
*/
#include "sprite_nodes/CCSpriteFrame.h"
#include "textures/CCTexture2D.h"
#include "cocoa/CCObject.h"
#include <set>
#include <string>
NS_CC_BEGIN
class Dictionary;
class Array;
class Sprite;
/**
* @addtogroup sprite_nodes
* @{
*/
/** @brief 处理加载精灵帧的单例。
它把精灵帧保存在缓存中
@since v0.9
*/
class CC_DLL SpriteFrameCache : public Object
{
public:
/** Returns the shared instance of the Sprite Frame cache */
static SpriteFrameCache* getInstance(void);
/** @过时不再需要建议使用新的 API ,可以使用 getInstance() 代替 */
CC_DEPRECATED_ATTRIBUTE static SpriteFrameCache* sharedSpriteFrameCache() { return SpriteFrameCache::getInstance(); }
/** 销毁缓存。它释放所有的 Sprite Frames 和保留的实例. */
static void destroyInstance();
/** @过时不再需要建议使用新的 API ,可以使用 destroyInstance() 代替 */
CC_DEPRECATED_ATTRIBUTE static void purgeSharedSpriteFrameCache() { return SpriteFrameCache::destroyInstance(); }
protected:
// MARMALADE: 这个保护不是私人的,从这个类派生是非常有用的
SpriteFrameCache() : _spriteFrames(NULL), _spriteFramesAliases(NULL){}
public:
/**
* @js NA
* @lua NA
*/
virtual ~SpriteFrameCache();
bool init(void);
public:
/** 从一个plist文件添加多个 Sprite Frames
* texture 将被自动加载. texture 后缀名会从 .plist 替换为 .png
* 如果你希望使用其它的 texture, 你应该使用 addSpriteFramesWithFile(const char *plist, const char *textureFileName) 方法.
* @js addSpriteFrames
* @lua addSpriteFrames
*/
void addSpriteFramesWithFile(const char *plist);
/** 从一个plist文件添加多个 Sprite Frames. texture 将关联所有创建的 sprite frames.
@since v0.99.5
* @js addSpriteFrames
* @lua addSpriteFrames
*/
void addSpriteFramesWithFile(const char* plist, const char* textureFileName);
/** 从一个plist文件添加多个 Sprite Frames. texture 将关联所有创建的 sprite frames.
* @js addSpriteFrames
* @lua addSpriteFrames
*/
void addSpriteFramesWithFile(const char *plist, Texture2D *texture);
/** 给定的名字添加一个 Sprite Frames
If the name already exists, then the contents of the old name will be replaced with the new one.
*/
void addSpriteFrame(SpriteFrame *frame, const char *frameName);
/** 清除字典中加载的 sprite frames.
* 如果你收到了 "Memory Warning" 可以调用这个方法.
* 在短期内: 它还将释放一些资源,防止您的应用程序被杀害。
* 中期: 它将分配更多的资源
* 从长远来看:它会是相同的
*/
void removeSpriteFrames(void);
/** 删除未使用的精灵帧.
* retain count (保留计数)为 为 1 的 Sprite Frames 会删除
* 调用此方法后可以很方便的开始一个新的 Scene.
*/
void removeUnusedSpriteFrames(void);
/** Deletes an sprite frame from the sprite frame cache. */
void removeSpriteFrameByName(const char *name);
/** 从一个plist文件移除多个 Sprite Frames.
* 存储在该文件的 Sprite Frames 将会删除
* 需要删除一个文件里面的 Sprite Frames,调用这个方法很方便
* @since v0.99.5
*/
void removeSpriteFramesFromFile(const char* plist);
/** 移除所有与指定 textures 关联的 Sprite Frames
* 需要删除一个特定 texture 时,调用这个方法很方便
* @since v0.995.
*/
void removeSpriteFramesFromTexture(Texture2D* texture);
/** Returns 上次添加的 Sprite Frame that was previously added.
名字没有找到会返回 nil.
如果你要使用它你应该retain(保留)返回的副本.
* @js getSpriteFrame
* @lua getSpriteFrame
*/
SpriteFrame* getSpriteFrameByName(const char *name);
/** @过时不再需要建议使用新的 API ,可以使用 getSpriteFrameByName() 代替 */
CC_DEPRECATED_ATTRIBUTE SpriteFrame* spriteFrameByName(const char *name) { return getSpriteFrameByName(name); }
private:
/* 使用字典 添加多个 Sprite Frames . texture 将关联所有创建的 sprite frames.
*/
void addSpriteFramesWithDictionary(Dictionary* dictionary, Texture2D *texture);
/** 移除字典中的多个 Sprite Frames.
* @since v0.99.5
*/
void removeSpriteFramesFromDictionary(Dictionary* dictionary);
protected:
Dictionary* _spriteFrames;
Dictionary* _spriteFramesAliases;
std::set<std::string>* _loadedFileNames;
};
// end of sprite_nodes group
/// @}
NS_CC_END
#endif // __SPRITE_CCSPRITE_FRAME_CACHE_H__