x结构学习(六)CCScene、CCSprite、CCTextureProtocol、CCBlend

1、CCScene:很简单的场景类,继承自CCNode,大多数情况可继承他来构造场景

class CC_DLL CCScene : public CCNode{public:CCScene();virtual ~CCScene();bool init();//初始化static CCScene *create(void);//创建场景};2、CCSprite(精灵):继承自CCNodeRGBA,CCTextureProtocol,另外还可以根据需要继承CCGLBufferedNodeclass CC_DLL CCSprite : public CCNodeRGBA, public CCTextureProtocol#ifdef EMSCRIPTEN, public CCGLBufferedNode#endif{public: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);CCSprite(void);virtual ~CCSprite(void); 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);inline ccBlendFunc getBlendFunc(void) { return m_sBlendFunc; } //得到混合函数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);//设置Z坐标virtual void setAnchorPoint(const CCPoint& anchor);//两个锚点相关函数virtual void ignoreAnchorPointForPosition(bool value);virtual void setVisible(bool bVisible);//设置是否可见virtual void draw(void);//绘制virtual void setColor(const ccColor3B& color3);//几个RGB颜色相关和显示相关函数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);virtual void updateTransform(void);//更新变换(旋转,缩放,平移)virtual CCSpriteBatchNode* getBatchNode(void);//获得和设置批处理节点对象virtual void setBatchNode(CCSpriteBatchNode *pobSpriteBatchNode);virtual void setTextureRect(const CCRect& rect);//几个矩形设置相关函数virtual void setTextureRect(const CCRect& rect, bool rotated, const CCSize& untrimmedSize);virtual void setVertexRect(const CCRect& rect);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; }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 const CCRect& getTextureRect(void) { return m_obRect; }//获得纹理矩形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);protected:void updateColor(void);virtual void setTextureCoords(CCRect rect);virtual void updateBlendFunc(void);virtual void setReorderChildDirtyRecursively(void);virtual void setDirtyRecursively(bool bValue);CCTextureAtlas*m_pobTextureAtlas;unsigned intm_uAtlasIndex;CCSpriteBatchNode* m_pobBatchNode;boolm_bDirty;boolm_bRecursiveDirty;boolm_bHasChildren;boolm_bShouldBeHidden;CCAffineTransform m_transformToBatch;ccBlendFuncm_sBlendFunc;CCTexture2D*m_pobTexture;CCRect m_obRect;bool m_bRectRotated;CCPoint m_obOffsetPosition;CCPoint m_obUnflippedOffsetPositionFromCenter;ccV3F_C4B_T2F_Quad m_sQuad;bool m_bOpacityModifyRGB;bool m_bFlipX;bool m_bFlipY;};3、CCTextureProtocol:纹理(协议)底层处理类,继承自CCBlendProtocol,很简单,只有两个函数,设置和获得纹理对象class CC_DLL CCTextureProtocol : public CCBlendProtocol{public:virtual CCTexture2D* getTexture(void) = 0;virtual void setTexture(CCTexture2D *texture) = 0;};4、CCBlendProtocol:混合(协议)底层接口类,很简单,两函数分别是设置和获得混合对象class CC_DLL CCBlendProtocol{public:virtual void setBlendFunc(ccBlendFunc blendFunc) = 0;virtual ccBlendFunc getBlendFunc(void) = 0;};5、CCGLBufferedNode:openGL缓冲节点类class CCGLBufferedNode{public:CCGLBufferedNode(void);void setGLBufferData(void *buf, GLuint bufSize, int slot); //设置缓冲数据void setGLIndexData(void *buf, GLuint bufSize, int slot);#define BUFFER_SLOTS 4GLuint m_bufferObject[BUFFER_SLOTS];GLuint m_bufferSize[BUFFER_SLOTS];GLuint m_indexBufferObject[BUFFER_SLOTS];GLuint m_indexBufferSize[BUFFER_SLOTS];};

,而只有在充满了艰辛的人生旅途中,始终调整好自己观风景的心态,

x结构学习(六)CCScene、CCSprite、CCTextureProtocol、CCBlend

相关文章:

你感兴趣的文章:

标签云: