cocos2dx, 重新initWithSpriteFrameName与重新setTexture()+setTextureRect()区别

比如我们有一个sprite是通过createWithSpriteFrameName创建的,现在我们需要为其更换贴图,有两种方法:

一种方法是再次调用createWithSpriteFrameName,即:sprite->initWithSpriteFrameName(newSpriteFrameName)。

另一种方法是通过setTexture()+setTextureRect(),即:

CCSpriteFrame*spriteFrame=CCSpriteFrameCache::sharedSpriteFrameCache()->getSpriteFrameByName(newSpriteFrameName);

sprite->setTexture(spriteFrame->getTexture());

sprite->setTextureRect(spriteFrame->getRect());

第一种方法有很强的复作用,即sprite会被恢复出厂设置,以前对它设置的如opacity等均会失效。

第二种方法才是正确的方法,仅改变sprite的贴图。

你可能感兴趣的:(cocos2dx)