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的贴图。