cocos2dx进阶学习之CCSprite

继承关系

CCSprite -> CCNodeRGBA       ->   CCNode, CCRGBAProtocol

                      CCTextureProtocol

从继承关系可以看出,CCSprite也是一个CCNode的子类,在cocos2dx中,CCSprite抽象了舞台中的角色对象,类似舞台中的舞者,或者舞台中的某一个道具。


成员函数

static CCSprite* create();

static CCSprite* create(const char *pszFileName);

static CCSprite* create(const char *pszFileName, const CCRect& rect);

static CCSprite* createWithTexture(CCTexture2D *pTexture);

static CCSprite* createWithTexture(CCTexture2D *pTexture, const CCRect& rect);

static CCSprite* createWithSpriteFrame(CCSpriteFrame *pSpriteFrame);

static CCSprite* createWithSpriteFrameName(const char *pszSpriteFrameName);

创建函数,精灵一般需要一个纹理图片作为其参数,也有些函数有矩形,表示只需要用一部分纹理作为精灵



virtual void setPosition(const CCPoint& pos);

virtual void setRotation(float fRotation);

virtual void setRotationX(float fRotationX);

virtual void setRotationY(float fRotationY);

virtual void setSkewX(float sx);

virtual void setSkewY(float sy);

virtual void removeChild(CCNode* pChild, bool bCleanup);

virtual void removeAllChildrenWithCleanup(bool bCleanup);

virtual void reorderChild(CCNode *pChild, int zOrder);

virtual void addChild(CCNode *pChild);

virtual void addChild(CCNode *pChild, int zOrder);

virtual void addChild(CCNode *pChild, int zOrder, int tag);

virtual void sortAllChildren();

virtual void setScale(float fScale);

virtual void setVertexZ(float fVertexZ);

virtual void setAnchorPoint(const CCPoint& anchor);

virtual void ignoreAnchorPointForPosition(bool value);

virtual void setVisible(bool bVisible);

virtual void draw(void);

virtual void updateTransform(void);

以上接口时重载CCNode,这里不再赘述


virtual void setColor(const ccColor3B& color3);

virtual void updateDisplayedColor(const ccColor3B& parentColor);

virtual void setOpacity(GLubyte opacity);

virtual void setOpacityModifyRGB(bool modify);

virtual bool isOpacityModifyRGB(void);   

virtual void updateDisplayedOpacity(GLubyte parentOpacity);

以上接口来自CCNodeRGBA,这里不再赘述


virtual CCSpriteBatchNode* getBatchNode(void);

virtual void setBatchNode(CCSpriteBatchNode *pobSpriteBatchNode); 

设置CCSpriteBatchNode,但是建议用get接口,不建议用set接口


virtual void setTextureRect(const CCRect& rect);

virtual void setTextureRect(const CCRect& rect, bool rotated, const CCSize& untrimmedSize);

inline const CCRect& getTextureRect(void) { return m_obRect; }

设置纹理的矩形,来改变精灵


virtual void setDisplayFrame(CCSpriteFrame *pNewFrame);

virtual bool isFrameDisplayed(CCSpriteFrame *pFrame);

virtual CCSpriteFrame* displayFrame(void);

virtual void setDisplayFrameWithAnimationName(const char *animationName, int frameIndex);

设置显示帧,通过这些函数可以实现动画


inline virtual bool isDirty(void) { return m_bDirty; }

inline virtual void setDirty(bool bDirty) { m_bDirty = bDirty; }

dirty表明精灵需要更新


inline ccV3F_C4B_T2F_Quad getQuad(void) { return m_sQuad; }

获取坐标、顶点、颜色信息


inline bool isTextureRectRotated(void) { return m_bRectRotated; }

返回纹理图片是否旋转了


inline unsigned int getAtlasIndex(void) { return m_uAtlasIndex; }

inline void setAtlasIndex(unsigned int uAtlasIndex) { m_uAtlasIndex = uAtlasIndex; }

如果采用批渲染,返回/设置纹理地图集


inline CCTextureAtlas* getTextureAtlas(void) { return m_pobTextureAtlas; }

inline void setTextureAtlas(CCTextureAtlas *pobTextureAtlas) { m_pobTextureAtlas = pobTextureAtlas; }

获取/设置地图纹理


inline const CCPoint& getOffsetPosition(void) { return m_obOffsetPosition; }

获取位置


bool isFlipX(void);

void setFlipX(bool bFlipX);

bool isFlipY(void);

void setFlipY(bool bFlipY);

设置翻转



原文地址:https://www.cnblogs.com/new0801/p/6177221.html