cocos2d-X 节点(CCSpriteFrameCache.h)API

本文来自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__


你可能感兴趣的:(api,cocos2d,cocos2dx,cocos2d-x)