读书人

【玩转cocos2d-x之8】精灵类CCSprite

发布时间: 2013-10-16 11:29:46 作者: rapoo

【玩转cocos2d-x之八】精灵类CCSprite

原创作品,转载请标明:http://blog.csdn.net/jackystudio/article/details/12747385


精灵类CCSprite可以说是游戏的主角了,也是我们平时最常用到的类。


1.概况

【玩转cocos2d-x之8】精灵类CCSprite

CCSprite本质上就是一个二维图片,是静态的。游戏中的动画只不过是让一张张静态图片快速更换达到的动态效果。CCSprite继承于CCNodeRGBA,并实现了CCTextureProtocol的接口。因此CCNodeRGBA所具有的RGB和透明值这些属性和接口CCSprite都有,而CCTextureProtocol是一个抽象类,定义了和纹理相关的两个标准接口:

[cpp] view plaincopy
  1. //返回当前使用的纹理
  2. virtual CCTexture2D* getTexture(void) = 0;
  3. //设置一个新的纹理,它会被retain
  4. virtual void setTexture(CCTexture2D *texture) = 0;


2.常用接口

2.1.初始化

[cpp] view plaincopy
  1. //初始化函数
  2. virtual bool init(void);
  3. //用CCTexture2D纹理来初始化,精灵大小即是纹理大小
  4. virtual bool initWithTexture(CCTexture2D *pTexture);
  5. ///用CCTexture2D纹理和大小来初始化
  6. virtual bool initWithTexture(CCTexture2D *pTexture, const CCRect& rect);
  7. //用CCTexture2D纹理,大小,旋转来初始化
  8. virtual bool initWithTexture(CCTexture2D *pTexture, const CCRect& rect, bool rotated);
  9. //用CCSpriteFrame精灵帧来初始化
  10. virtual bool initWithSpriteFrame(CCSpriteFrame *pSpriteFrame);
  11. //用CCSpriteFrame精灵帧名来初始化
  12. virtual bool initWithSpriteFrameName(const char *pszSpriteFrameName);
  13. //用外部文件初始化,外部文件会先被创建为纹理,再用纹理初始化精灵
  14. virtual bool initWithFile(const char *pszFilename);
  15. //用外部文件和大小来初始化
  16. virtual bool initWithFile(const char *pszFilename, const CCRect& rect);
2.2.继承自CCTextureProtocol

[cpp] view plaincopy
  1. //设置/获取纹理
  2. virtual void setTexture(CCTexture2D *texture);
  3. virtual CCTexture2D* getTexture(void);
  4. //设置/获取颜色描绘时混合方案
  5. void setBlendFunc(ccBlendFunc blendFunc);
  6. ccBlendFunc getBlendFunc(void);
2.3.继承自CCNode

参见CCNode。

[cpp] view plaincopy
  1. virtual void setScaleX(float fScaleX);
  2. virtual void setScaleY(float fScaleY);
  3. virtual void setPosition(const CCPoint& pos);
  4. virtual void setRotation(float fRotation);
  5. virtual void setRotationX(float fRotationX);
  6. virtual void setRotationY(float fRotationY);
  7. virtual void setSkewX(float sx);
  8. virtual void setSkewY(float sy);
  9. virtual void removeChild(CCNode* pChild, bool bCleanup);
  10. virtual void removeAllChildrenWithCleanup(bool bCleanup);
  11. virtual void reorderChild(CCNode *pChild, int zOrder);
  12. virtual void addChild(CCNode *pChild);
  13. virtual void addChild(CCNode *pChild, int zOrder);
  14. virtual void addChild(CCNode *pChild, int zOrder, int tag);
  15. virtual void sortAllChildren();
  16. virtual void setScale(float fScale);
  17. virtual void setVertexZ(float fVertexZ);
  18. virtual void setAnchorPoint(const CCPoint& anchor);//默认(0.5,0.5)
  19. virtual void ignoreAnchorPointForPosition(bool value);
  20. virtual void setVisible(bool bVisible);
  21. virtual void draw(void);
2.4.继承自CCNodeRGBA

[cpp] view plaincopy
  1. //设置颜色
  2. virtual void setColor(const ccColor3B& color3);
  3. //传递颜色
  4. virtual void updateDisplayedColor(const ccColor3B& parentColor);
  5. //设置透明度
  6. virtual void setOpacity(GLubyte opacity);
  7. //设置/返回透明度是否跟随颜色值变化而变化
  8. virtual void setOpacityModifyRGB(bool modify);
  9. virtual bool isOpacityModifyRGB(void);
  10. //传递透明度
  11. virtual void updateDisplayedOpacity(GLubyte parentOpacity);
2.5.批节点

[cpp] view plaincopy
  1. //更新4属性:x,y,rotation,scale
  2. virtual void updateTransform(void);
  3. //如果精灵是由批节点CCSpriteBatchNode渲染的,则返回批节点
  4. virtual CCSpriteBatchNode* getBatchNode(void);
  5. //设置批节点,不推荐使用
  6. virtual void setBatchNode(CCSpriteBatchNode *pobSpriteBatchNode);
2.6.纹理

[cpp] view plaincopy
  1. //设置纹理区域
  2. virtual void setTextureRect(const CCRect& rect);
  3. virtual void setTextureRect(const CCRect& rect, bool rotated, const CCSize& untrimmedSize);
  4. virtual void setVertexRect(const CCRect& rect);
2.7.精灵帧和动画

[cpp] view plaincopy
  1. //设置新的精灵帧
  2. virtual void setDisplayFrame(CCSpriteFrame *pNewFrame);
  3. //返回精灵帧是否在使用
  4. virtual bool isFrameDisplayed(CCSpriteFrame *pFrame);
  5. //返回当期使用精灵帧
  6. virtual CCSpriteFrame* displayFrame(void);
  7. //设置动画和显示索引
  8. virtual void setDisplayFrameWithAnimationName(const char *animationName, int frameIndex);
2.8.Setter和Getter方法

设置/获取CCSprite属性。

[cpp] view plaincopy
  1. //设置获取是否更新
  2. virtual bool isDirty(void);
  3. virtual void setDirty(bool bDirty);
  4. //返回坐标、顶点、颜色信息
  5. ccV3F_C4B_T2F_Quad getQuad(void);
  6. //返回纹理旋转
  7. bool isTextureRectRotated(void);
  8. //返回/设置地图集索引
  9. unsigned int getAtlasIndex(void);
  10. void setAtlasIndex(unsigned int uAtlasIndex);
  11. //返回精灵区域,单位为点
  12. const CCRect& getTextureRect(void);
  13. //如果采用批渲染,返回/设置纹理地图集
  14. CCTextureAtlas* getTextureAtlas(void);
  15. inline void setTextureAtlas(CCTextureAtlas *pobTextureAtlas);
  16. //获取偏移
  17. const CCPoint& getOffsetPosition(void);
  18. //设置返回翻转
  19. bool isFlipX(void);
  20. void setFlipX(bool bFlipX);
  21. bool isFlipY(void);
  22. void setFlipY(bool bFlipY);

读书人网 >操作系统

热点推荐