原创作品,转载请标明:http://blog.csdn.net/jackystudio/article/details/12747385
精灵类CCSprite可以说是游戏的主角了,也是我们平时最常用到的类。
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);