原创作品,转载请标明:http://blog.csdn.net/jackystudio/article/details/12747385
精灵类CCSprite可以说是游戏的主角了,也是我们平时最常用到的类。
1.概况
![](http://image69.360doc.com/DownloadImg/2014/02/2421/39391841_1)
CCSprite本质上就是一个二维图片,是静态的。游戏中的动画只不过是让一张张静态图片快速更换达到的动态效果。CCSprite继承于CCNodeRGBA,并实现了CCTextureProtocol的接口。因此CCNodeRGBA所具有的RGB和透明值这些属性和接口CCSprite都有,而CCTextureProtocol是一个抽象类,定义了和纹理相关的两个标准接口:
-
//返回当前使用的纹理
-
virtual CCTexture2D* getTexture(void) = 0;
-
-
//设置一个新的纹理,它会被retain
-
virtual void setTexture(CCTexture2D *texture) = 0;
2.常用接口
2.1.初始化
-
//初始化函数
-
virtual bool init(void);
-
-
//用CCTexture2D纹理来初始化,精灵大小即是纹理大小
-
virtual bool initWithTexture(CCTexture2D *pTexture);
-
-
///用CCTexture2D纹理和大小来初始化
-
virtual bool initWithTexture(CCTexture2D *pTexture, const CCRect& rect);
-
-
//用CCTexture2D纹理,大小,旋转来初始化
-
virtual bool initWithTexture(CCTexture2D *pTexture, const CCRect& rect, bool rotated);
-
-
//用CCSpriteFrame精灵帧来初始化
-
virtual bool initWithSpriteFrame(CCSpriteFrame *pSpriteFrame);
-
-
//用CCSpriteFrame精灵帧名来初始化
-
virtual bool initWithSpriteFrameName(const char *pszSpriteFrameName);
-
-
//用外部文件初始化,外部文件会先被创建为纹理,再用纹理初始化精灵
-
virtual bool initWithFile(const char *pszFilename);
-
-
//用外部文件和大小来初始化
-
virtual bool initWithFile(const char *pszFilename, const CCRect& rect);
2.2.继承自CCTextureProtocol
-
//设置/获取纹理
-
virtual void setTexture(CCTexture2D *texture);
-
virtual CCTexture2D* getTexture(void);
-
-
//设置/获取颜色描绘时混合方案
-
void setBlendFunc(ccBlendFunc blendFunc);
-
ccBlendFunc getBlendFunc(void);
2.3.继承自CCNode
参见CCNode。
-
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);//默认(0.5,0.5)
-
virtual void ignoreAnchorPointForPosition(bool value);
-
virtual void setVisible(bool bVisible);
-
virtual void draw(void);
2.4.继承自CCNodeRGBA
-
//设置颜色
-
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);
2.5.批节点
-
//更新4属性:x,y,rotation,scale
-
virtual void updateTransform(void);
-
-
//如果精灵是由批节点CCSpriteBatchNode渲染的,则返回批节点
-
virtual CCSpriteBatchNode* getBatchNode(void);
-
//设置批节点,不推荐使用
-
virtual void setBatchNode(CCSpriteBatchNode *pobSpriteBatchNode);
2.6.纹理
-
//设置纹理区域
-
virtual void setTextureRect(const CCRect& rect);
-
virtual void setTextureRect(const CCRect& rect, bool rotated, const CCSize& untrimmedSize);
-
virtual void setVertexRect(const CCRect& rect);
2.7.精灵帧和动画
-
//设置新的精灵帧
-
virtual void setDisplayFrame(CCSpriteFrame *pNewFrame);
-
-
//返回精灵帧是否在使用
-
virtual bool isFrameDisplayed(CCSpriteFrame *pFrame);
-
-
//返回当期使用精灵帧
-
virtual CCSpriteFrame* displayFrame(void);
-
-
//设置动画和显示索引
-
virtual void setDisplayFrameWithAnimationName(const char *animationName, int frameIndex);
2.8.Setter和Getter方法
设置/获取CCSprite属性。
-
//设置获取是否更新
-
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);
|