cocos2dx Texture、SpriteFrame、Sprite的區別

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的表現了。


發佈了63 篇原創文章 · 獲贊 56 · 訪問量 25萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章