![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiIyVGduV2QvwVe0lmdhJ3ZvwFM38CXlZHbvN3cpR2Lc1TPB10QGtWUCpEMJ9CXsxWam9CXwADNvwVZ6l2c052bm9CXUJDT1wkNhVzLcRnbvZ2LcZXUYpVd1kmYr50MZV3YyI2cKJDT29GRjBjUIF2LcRHelR3LcJzLctmch1mclRXY39jN2ETO1IzMxIDMykDM1EDMy8CX0Vmbu4GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.jpg)
代碼:
/** @class SpriteFrame
* @brief A SpriteFrame has:
- texture: A Texture2D that will be used by the Sprite
- rectangle: A rectangle of the texture
精靈幀
紋理:精靈使用的2D紋理
矩形:紋理的矩形
You can modify the frame of a Sprite by doing:
你可以通過下面的方法修改一個精靈的幀:
SpriteFrame *frame = SpriteFrame::frameWithTexture(texture, rect, offset);
sprite->setDisplayFrame(frame);
*/
class CC_DLL SpriteFrame : public Ref, public Clonable
{
public:
/** Create a SpriteFrame with a texture filename, rect in points.
It is assumed that the frame was not trimmed.
*
* @param filename Texture file name.
* @param rect A specified rect.
* @return An autoreleased SpriteFrame object.
*/
// 建立一個精靈幀
static SpriteFrame* create(const std::string& filename, const Rect& rect);
/** Create a SpriteFrame with a texture filename, rect, rotated, offset and originalSize in pixels.
The originalSize is the size in pixels of the frame before being trimmed.
*
* @param filename Texture filename
* @param rect A specified rect.
* @param rotated Is rotated if true.
* @param offset A specified offset.
* @param originalSize A specified original size.
* @return An autoreleased SpriteFrame object.
*/
static SpriteFrame* create(const std::string& filename, const Rect& rect, bool rotated, const Vec2& offset, const Size& originalSize);
/** Create a SpriteFrame with a texture, rect in points.
It is assumed that the frame was not trimmed.
* @param pobTexture The texture pointer.
* @param rect A specified rect.
* @return An autoreleased SpriteFrame object.
*/
// 通過紋理建立一個精靈幀
static SpriteFrame* createWithTexture(Texture2D* pobTexture, const Rect& rect);
/** Create a SpriteFrame with a texture, rect, rotated, offset and originalSize in pixels.
The originalSize is the size in points of the frame before being trimmed.
* @param pobTexture The texture pointer.
* @param rect A specified rect.
* @param rotated Is rotated if true.
* @param offset A specified offset.
* @param originalSize A specified original size.
* @return An autoreleased SpriteFrame object.
*/
static SpriteFrame* createWithTexture(Texture2D* pobTexture, const Rect& rect, bool rotated, const Vec2& offset, const Size& originalSize);
// attributes
/** Get rect of the sprite frame.
*
* @return The rect of the sprite frame, in pixels.
*/
// 得到精靈幀的Rect
inline const Rect& getRectInPixels() const { return _rectInPixels; }
/** Set rect of the sprite frame.
*
* @param rectInPixels The rect of the sprite frame, in pixels.
*/
// 設定精靈幀的Rect
void setRectInPixels(const Rect& rectInPixels);
/**Is the sprite frame rotated or not.
*
* @return Is rotated if true.
*/
// 是否被旋轉
inline bool isRotated() const { return _rotated; }
/** Set rotated of the sprite frame.
*
* @param rotated Rotated the sprite frame if true.
*/
// 設定是否被旋轉
inline void setRotated(bool rotated) { _rotated = rotated; }
/** Get rect of the frame.
*
* @return The rect of the sprite frame.
*/
// 得到rect
inline const Rect& getRect() const { return _rect; }
/** Set rect of the frame.
*
* @param rect The rect of the sprite.
*/
// 設定Rect
void setRect(const Rect& rect);
/** Get offset of the frame.
*
* @return The offset of the sprite frame, in pixels.
*/
// 得到像素偏移
const Vec2& getOffsetInPixels() const;
/** Set offset of the frame.
*
* @param offsetInPixels The offset of the sprite frame, in pixels.
*/
// 設定像素偏移
void setOffsetInPixels(const Vec2& offsetInPixels);
/** Get original size of the trimmed image.
*
* @return The original size of the trimmed image, in pixels.
*/
// 得到像素級原始尺寸
inline const Size& getOriginalSizeInPixels() const { return _originalSizeInPixels; }
/** Set original size of the trimmed image.
*
* @param sizeInPixels The original size of the trimmed image, in pixels.
*/
// 設定像素級原始尺寸
inline void setOriginalSizeInPixels(const Size& sizeInPixels) { _originalSizeInPixels = sizeInPixels; }
/** Get original size of the trimmed image.
*
* @return The original size of the trimmed image.
*/
//得到原始尺寸
inline const Size& getOriginalSize() const { return _originalSize; }
/** Set original size of the trimmed image.
*
* @param sizeInPixels The original size of the trimmed image.
*/
// 設定原始尺寸
inline void setOriginalSize(const Size& sizeInPixels) { _originalSize = sizeInPixels; }
/** Get texture of the frame.
*
* @return The texture of the sprite frame.
*/
// 得到紋理
Texture2D* getTexture();
/** Set texture of the frame, the texture is retained.
*
* @param pobTexture The texture of the sprite frame.
*/
// 設定紋理
void setTexture(Texture2D* pobTexture);
/** Get offset of the frame.
*
* @return The offset of the sprite frame.
*/
// 得到偏移
const Vec2& getOffset() const;
/** Set offset of the frame.
*
* @param offsets The offset of the sprite frame.
*/
// 設定偏移
void setOffset(const Vec2& offsets);
// Overrides
// 克隆
virtual SpriteFrame *clone() const override;
CC_CONSTRUCTOR_ACCESS:
/**
* @lua NA
*/
SpriteFrame();
/**
* @lua NA
*/
virtual ~SpriteFrame();
/** Initializes a SpriteFrame with a texture, rect in points.
It is assumed that the frame was not trimmed.
*/
// 初始化
bool initWithTexture(Texture2D* pobTexture, const Rect& rect);
/** Initializes a SpriteFrame with a texture filename, rect in points;
It is assumed that the frame was not trimmed.
*/
bool initWithTextureFilename(const std::string& filename, const Rect& rect);
/** Initializes a SpriteFrame with a texture, rect, rotated, offset and originalSize in pixels.
The originalSize is the size in points of the frame before being trimmed.
*/
bool initWithTexture(Texture2D* pobTexture, const Rect& rect, bool rotated, const Vec2& offset, const Size& originalSize);
/** Initializes a SpriteFrame with a texture, rect, rotated, offset and originalSize in pixels.
The originalSize is the size in pixels of the frame before being trimmed.
@since v1.1
*/
bool initWithTextureFilename(const std::string& filename, const Rect& rect, bool rotated, const Vec2& offset, const Size& originalSize);
protected:
Vec2 _offset;
Size _originalSize;
Rect _rectInPixels;
bool _rotated;
Rect _rect;
Vec2 _offsetInPixels;
Size _originalSizeInPixels;
Texture2D *_texture;
std::string _textureFilename;
};
// end of _2d group
/// @}