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


你可能感兴趣的:(cocos2d-x)