#ifndef __SPRITE_CCSPRITE_FRAME_H__ #define __SPRITE_CCSPRITE_FRAME_H__ //相关头文件 #include "base_nodes/CCNode.h" #include "CCProtocols.h" #include "cocoa/CCObject.h" #include "cocoa/CCGeometry.h" //Cocos2d命名空间 NS_CC_BEGIN //要用到的类 class CCTexture2D; class CCZone; //精灵帧:精灵序列帧动画中的一帧。 class CC_DLL CCSpriteFrame : public CCObject { public: //取得精灵帧的大小(像素单位) inline const CCRect& getRectInPixels(void) { return m_obRectInPixels; } //设置精灵帧的大小(像素单位) void setRectInPixels(const CCRect& rectInPixels); //取得当前帧所用的纹理块是否旋转了90度 inline bool isRotated(void) { return m_bRotated; } //设置当前帧所用的纹理块旋转90度 inline void setRotated(bool bRotated) { m_bRotated = bRotated; } //取得当前帧所用的纹理块在图集纹理的矩形(点单位) inline const CCRect& getRect(void) { return m_obRect; } //设置当前帧所用的纹理块在图集中的矩形(点单位) void setRect(const CCRect& rect); //取得当前帧所用的纹理块在图集中的位置(像素单位) const CCPoint& getOffsetInPixels(void); //设置当前帧所用的纹理块在图集中的位置(像素单位) void setOffsetInPixels(const CCPoint& offsetInPixels); //取得纹理块的原始大小(像素单位)。 inline const CCSize& getOriginalSizeInPixels(void) { return m_obOriginalSizeInPixels; } //设置纹理块的原始大小(像素单位)。 inline void setOriginalSizeInPixels(const CCSize& sizeInPixels) { m_obOriginalSizeInPixels = sizeInPixels; } //取得纹理块的原始大小(点单位)。 inline const CCSize& getOriginalSize(void) { return m_obOriginalSize; } //设置纹理块的原始大小(点单位)。 inline void setOriginalSize(const CCSize& sizeInPixels) { m_obOriginalSize = sizeInPixels; } //取得当前帧所使用的图集纹理 CCTexture2D* getTexture(void); //设置当前帧所使用的图集纹理 void setTexture(CCTexture2D* pobTexture); //取得纹理块在合并时去掉周围空白边后的锚点偏移(点单位). const CCPoint& getOffset(void); //设置纹理块在合并时去掉周围空白边后的锚点偏移(点单位). void setOffset(const CCPoint& offsets); public: //析构 ~CCSpriteFrame(void); //创建一个当前实例的拷贝 virtual CCObject* copyWithZone(CCZone *pZone); //从一个图集纹理中创建出一帧,内部调用对应createWithTexture函数实现,参一为图集纹理,参二为纹理块矩形。 CC_DEPRECATED_ATTRIBUTE static CCSpriteFrame* frameWithTexture(CCTexture2D* pobTexture, const CCRect& rect); //从一张图集图片中创建出一帧,内部调用对应create函数实现,参一为图集图片名称,参二为纹理块矩形。 CC_DEPRECATED_ATTRIBUTE static CCSpriteFrame* frameWithTextureFilename(const char* filename, const CCRect& rect); //从一个图集纹理中创建出一帧,内部调用对应createWithTexture函数实现,参一为图集纹理,参二为对应纹理块的矩形,参三为矩形块是否旋转,参四为去掉纹理块空白后所导致的锚点偏移,参五为纹理块的原始大小。 CC_DEPRECATED_ATTRIBUTE static CCSpriteFrame* frameWithTexture(CCTexture2D* pobTexture, const CCRect& rect, bool rotated, const CCPoint& offset, const CCSize& originalSize); //从一个张图集图片中创建出一帧,内部调用对应create函数实现,参一为图集图片名称,参二为对应纹理块的矩形,参三为矩形块是否旋转,参四为去掉纹理块空白后所导致的锚点偏移,参五为纹理块的原始大小。 CC_DEPRECATED_ATTRIBUTE static CCSpriteFrame* frameWithTextureFilename(const char* filename, const CCRect& rect, bool rotated, const CCPoint& offset, const CCSize& originalSize); //从一张图片文件中以指定的矩形创建一个精灵帧。参一为图集图片名称,参二为对应纹理块的矩形。 static CCSpriteFrame* create(const char* filename, const CCRect& rect); //从一个图集图片中创建出一帧,参一为图集图片名称,参二为对应纹理块的矩形,参三为矩形块是否旋转,参四为去掉纹理块空白后所导致的锚点偏移,参五为纹理块的原始大小。 static CCSpriteFrame* create(const char* filename, const CCRect& rect, bool rotated, const CCPoint& offset, const CCSize& originalSize); //从一张图集纹理中以指定的矩形创建一个精灵帧。参一为图集纹理,参二为对应纹理块的矩形。 static CCSpriteFrame* createWithTexture(CCTexture2D* pobTexture, const CCRect& rect); //从一个图集纹理中创建出一帧,参一为图集纹理,参二为对应纹理块的矩形,参三为矩形块是否旋转,参四为去掉纹理块空白后所导致的锚点偏移,参五为纹理块的原始大小。 static CCSpriteFrame* createWithTexture(CCTexture2D* pobTexture, const CCRect& rect, bool rotated, const CCPoint& offset, const CCSize& originalSize); public: //初始化精灵帧:参一为图集纹理,参二为对应纹理块的矩形。 bool initWithTexture(CCTexture2D* pobTexture, const CCRect& rect); //初始化精灵帧:参一为图集图片名称,参二为对应纹理块的矩形。 bool initWithTextureFilename(const char* filename, const CCRect& rect); //初始化精灵帧:参一为图集纹理,参二为对应纹理块的矩形,参三为矩形块是否旋转,参四为去掉纹理块空白后所导致的锚点偏移,参五为纹理块的原始大小。 bool initWithTexture(CCTexture2D* pobTexture, const CCRect& rect, bool rotated, const CCPoint& offset, const CCSize& originalSize); //初始化精灵帧:参一为图集图片名称,参二为对应纹理块的矩形,参三为矩形块是否旋转,参四为去掉纹理块空白后所导致的锚点偏移,参五为纹理块的原始大小。 bool initWithTextureFilename(const char* filename, const CCRect& rect, bool rotated, const CCPoint& offset, const CCSize& originalSize); protected: //去掉纹理块空白后所导致的锚点偏移。 CCPoint m_obOffset; //纹理块的原始大小(未去掉空白的大小)。 CCSize m_obOriginalSize; //纹理块的大小(像素单位)。 CCRect m_obRectInPixels; //矩形块是否旋转。 bool m_bRotated; //纹理块 CCRect m_obRect; //去掉纹理块空白后所导致的锚点偏移(像素单位)。 CCPoint m_obOffsetInPixels; //纹理块的原始大小(像素单位)。 CCSize m_obOriginalSizeInPixels; //图集纹理。 CCTexture2D *m_pobTexture; //对应的图集图片。 std::string m_strTextureFilename; }; NS_CC_END #endif //__SPRITE_CCSPRITE_FRAME_H__
cocos2D-x关于精灵框架的实现
最新推荐文章于 2020-07-23 23:12:11 发布