《不靠谱2.x》006.CCSprite(上)003 CCSpriteFrame

前端之家收集整理的这篇文章主要介绍了《不靠谱2.x》006.CCSprite(上)003 CCSpriteFrame前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

一、概述
CCSpriteFrame继承自CCObject。看了源码后感觉和CCTexture2D一样,不常直接使用、更多作为中间变量。源码如下:

class CC_DLL CCSpriteFrame : public CCObject
{
public:
    // attributes

    inline const CCRect& getRectInPixels(void) { return m_obRectInPixels; }
    void setRectInPixels(const CCRect& rectInPixels);

    inline bool isRotated(void) { return m_bRotated; }
    inline void setRotated(bool bRotated) { m_bRotated = bRotated; }

    /** get rect of the frame */
    inline const CCRect& getRect(void) { return m_obRect; }
    /** set rect of the frame */
    void setRect(const CCRect& rect);

    /** get offset of the frame */
    const CCPoint& getOffsetInPixels(void);
    /** set offset of the frame */
    void setOffsetInPixels(const CCPoint& offsetInPixels);

    /** get original size of the trimmed image */
    inline const CCSize& getOriginalSizeInPixels(void) { return m_obOriginalSizeInPixels; }
    /** set original size of the trimmed image */
    inline void setOriginalSizeInPixels(const CCSize& sizeInPixels) { m_obOriginalSizeInPixels = sizeInPixels; }

    /** get original size of the trimmed image */
    inline const CCSize& getOriginalSize(void) { return m_obOriginalSize; }
    /** set original size of the trimmed image */
    inline void setOriginalSize(const CCSize& sizeInPixels) { m_obOriginalSize = sizeInPixels; }

    /** get texture of the frame */
    CCTexture2D* getTexture(void);
    /** set texture of the frame,the texture is retained */
    void setTexture(CCTexture2D* pobTexture);

    const CCPoint& getOffset(void);
    void setOffset(const CCPoint& offsets);

public:
    /**
     *  @js NA
     *  @lua NA
     */
    ~CCSpriteFrame(void);
    /** *  @js NA *  @lua NA */
    virtual CCObject* copyWithZone(CCZone *pZone);

    /** Create a CCSpriteFrame with a texture filename,rect in points. It is assumed that the frame was not trimmed. */
    static CCSpriteFrame* create(const char* filename,const CCRect& rect);

    /** Create a CCSpriteFrame with a texture filename,rect,rotated,offset and originalSize in pixels. The originalSize is the size in pixels of the frame before being trimmed. */
    static CCSpriteFrame* create(const char* filename,const CCRect& rect,bool rotated,const CCPoint& offset,const CCSize& originalSize);

    /** Create a CCSpriteFrame with a texture,rect in points. It is assumed that the frame was not trimmed. */
    static CCSpriteFrame* createWithTexture(CCTexture2D* pobTexture,const CCRect& rect);

    /** Create a CCSpriteFrame with a texture,offset and originalSize in pixels. The originalSize is the size in points of the frame before being trimmed. */
    static CCSpriteFrame* createWithTexture(CCTexture2D* pobTexture,const CCSize& originalSize);

public:
    /** Initializes a CCSpriteFrame with a texture,rect in points.
     It is assumed that the frame was not trimmed.
     */
    bool initWithTexture(CCTexture2D* pobTexture,const CCRect& rect);

    /** Initializes a CCSpriteFrame with a texture filename,rect in points; It is assumed that the frame was not trimmed. */
    bool initWithTextureFilename(const char* filename,const CCRect& rect);

    /** Initializes a CCSpriteFrame with a texture,offset and originalSize in pixels. The originalSize is the size in points of the frame before being trimmed. */
    bool initWithTexture(CCTexture2D* pobTexture,const CCSize& originalSize);

    /** Initializes a CCSpriteFrame with a texture,offset and originalSize in pixels. The originalSize is the size in pixels of the frame before being trimmed.  @since v1.1 */
    bool initWithTextureFilename(const char* filename,const CCSize& originalSize);


protected:
    CCPoint m_obOffset;
    CCSize m_obOriginalSize;
    CCRect m_obRectInPixels;
    bool   m_bRotated;
    CCRect m_obRect;
    CCPoint m_obOffsetInPixels;
    CCSize m_obOriginalSizeInPixels;
    CCTexture2D *m_pobTexture;
    std::string  m_strTextureFilename;
};

二、分析
1、CCSpriteFrame可通过:文件名、纹理、纹理文件名(不知道和前面的文件名有什么区别)生成
2、可以获取或设置这些属性的值:角度以及是否有角度偏转、矩形、大小、2D纹理、偏移

三、总结 1、可通过文件名、纹理、纹理文件生成CCSpriteFrame对象 2、不常直接使用,更多的作为中间变量

猜你在找的Cocos2d-x相关文章