【玩转cocos2d-x之八】精灵类CCSprite
精灵类CCSprite可以说是游戏的主角了,也是我们平时最常用到的类。
概况
CCSprite本质上就是一个二维图片,是静态的。游戏中的动画只不过是让一张张静态图片快速更换达到的动态效果。CCSprite继承于CCNodeRGBA,并实现了CCTextureProtocol的接口。因此CCNodeRGBA所具有的RGB和透明值这些属性和接口CCSprite都有,而CCTextureProtocol是一个抽象类,定义了和纹理相关的两个标准接口:
1 2 3 4 5
| virtual CCTexture2D* getTexture(void) = 0;
virtual void setTexture(CCTexture2D *texture) = 0;
|
常用接口
初始化
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| virtual bool init(void);
virtual bool initWithTexture(CCTexture2D *pTexture);
virtual bool initWithTexture(CCTexture2D *pTexture, const CCRect& rect);
virtual bool initWithTexture(CCTexture2D *pTexture, const CCRect& rect, bool rotated);
virtual bool initWithSpriteFrame(CCSpriteFrame *pSpriteFrame);
virtual bool initWithSpriteFrameName(const char *pszSpriteFrameName);
virtual bool initWithFile(const char *pszFilename);
virtual bool initWithFile(const char *pszFilename, const CCRect& rect);
|
继承自CCTextureProtocol
1 2 3 4 5 6 7
| virtual void setTexture(CCTexture2D *texture); virtual CCTexture2D* getTexture(void);
void setBlendFunc(ccBlendFunc blendFunc); ccBlendFunc getBlendFunc(void);
|
继承自CCNode
参见CCNode。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| virtual void setScaleX(float fScaleX); virtual void setScaleY(float fScaleY); 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);
|
继承自CCNodeRGBA
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| 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);
|
批节点
1 2 3 4 5 6 7
| virtual void updateTransform(void);
virtual CCSpriteBatchNode* getBatchNode(void);
virtual void setBatchNode(CCSpriteBatchNode *pobSpriteBatchNode);
|
纹理
1 2 3 4
| virtual void setTextureRect(const CCRect& rect); virtual void setTextureRect(const CCRect& rect, bool rotated, const CCSize& untrimmedSize); virtual void setVertexRect(const CCRect& rect);
|
精灵帧和动画
1 2 3 4 5 6 7 8 9 10 11
| virtual void setDisplayFrame(CCSpriteFrame *pNewFrame);
virtual bool isFrameDisplayed(CCSpriteFrame *pFrame);
virtual CCSpriteFrame* displayFrame(void);
virtual void setDisplayFrameWithAnimationName(const char *animationName, int frameIndex);
|
Setter和Getter方法
设置/获取CCSprite属性。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
| virtual bool isDirty(void); virtual void setDirty(bool bDirty);
ccV3F_C4B_T2F_Quad getQuad(void);
bool isTextureRectRotated(void);
unsigned int getAtlasIndex(void); void setAtlasIndex(unsigned int uAtlasIndex);
const CCRect& getTextureRect(void);
CCTextureAtlas* getTextureAtlas(void); inline void setTextureAtlas(CCTextureAtlas *pobTextureAtlas);
const CCPoint& getOffsetPosition(void);
bool isFlipX(void); void setFlipX(bool bFlipX); bool isFlipY(void); void setFlipY(bool bFlipY);
|