Texture是保存在GPU緩衝中的一張紋理。是由一張圖片創建獲得的。
SpriteFrame是Texture+Rect,根據一張紋理材質來剪切獲得。
SpriteFrame *spFrame = SpriteFrame::createWithTexture(texture, rect);
createWithTexture函數的定義如下:
SpriteFrame* SpriteFrame::createWithTexture(Texture2D *texture, const Rect& rect)
{
SpriteFrame *spriteFrame = new SpriteFrame();
spriteFrame->initWithTexture(texture, rect);
spriteFrame->autorelease();
return spriteFrame;
}
使用SpriteFrame 我們可以創建想要見到的Sprite。
Sprite *sp = Sprite::createWithSpriteFrame(spFrame);
這樣就通過剪切的Texture創建出了我們想要的Sprite。
Sprite可以動態的改變它的spFrame,這樣就形成了精靈幀。
sp->setDisplayFrame(spFrame2);
請看setDisplayFrame的定義:
void setDisplayFrame(SpriteFrame *newFrame) { setSpriteFrame(newFrame); }
void setSpriteFrame(SpriteFrame* frame)
{
CC_SAFE_RETAIN(frame);
CC_SAFE_RELEASE(_spriteFrame);
_spriteFrame = frame;
}
這樣就動態修改了Sprite的表現了。