cocos2D-x关于精灵框架的实现

#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__



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值