#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关于精灵框架的实现
最新推荐文章于 2025-01-12 11:12:26 发布