cocos2dx Texture、SpriteFrame、Sprite的区别

Texture是保存在GPU缓冲中的一张纹理。是由一张图片创建获得的。

SpriteFrame是Texture+Rect,根据一张纹理材质来剪切获得。

SpriteFrame *spFrame = SpriteFrame::createWithTexture(texture, rect);

createWithTexture函数的定义如下:

[cpp]  view plain  copy
  1. SpriteFrame* SpriteFrame::createWithTexture(Texture2D *texture, const Rect& rect)  
  2. {  
  3.     SpriteFrame *spriteFrame = new SpriteFrame();  
  4.     spriteFrame->initWithTexture(texture, rect);  
  5.     spriteFrame->autorelease();  
  6.       
  7.     return spriteFrame;  
  8. }  


使用SpriteFrame 我们可以创建想要见到的Sprite。

Sprite *sp = Sprite::createWithSpriteFrame(spFrame);

这样就通过剪切的Texture创建出了我们想要的Sprite。


Sprite可以动态的改变它的spFrame,这样就形成了精灵帧。

sp->setDisplayFrame(spFrame2);

请看setDisplayFrame的定义:

[cpp]  view plain  copy
  1. void setDisplayFrame(SpriteFrame *newFrame) { setSpriteFrame(newFrame); }  
  2.     void setSpriteFrame(SpriteFrame* frame)  
  3.     {  
  4.         CC_SAFE_RETAIN(frame);  
  5.         CC_SAFE_RELEASE(_spriteFrame);  
  6.         _spriteFrame = frame;  
  7.     }  
这样就动态修改了Sprite的表现了。

你可能感兴趣的:(cocos学习)