我有一个从 CCSprite 继承的对象。我想从这个对象内部改变图像。
在 Cocos2d-X 中如何在不创建新 CCSprite 对象的情况下更改图像(精灵)?
谢谢,阿德里安。
mySprite->setTexture(CCTextureCache::sharedTextureCache()->addImage("newImage.png"));
No need to alter your custom class.. Hope this helps.. :)
为我工作:
mySprite->setDisplayFrame(CCSpriteFrameCache::sharedSpriteFrameCache()->spriteFrameByName("frame_name"));
在需要将精灵加载到缓存中之前:
CCSpriteFrameCache::sharedSpriteFrameCache()->addSpriteFramesWithFile("sprite_atlas.plist");
我发现了,我把它留在这里,以防有人遇到同样的问题:
在继承自 CCSprite 对象的对象内部,编写如下函数
void MyObject::UpdateImage(Char * PngName)
{
   /* Create Image */
   CCImage *MyImage = new CCImage();
   MyImage->initWithImageFile( PngName ); /*the pngName is an image file in your resource folder */
   /* Create Texture from Image */
   CCTexture2D *MyTexture = new CCTexture2D();
   MyTexture->initWithImage(MyImage);
   /* Set the Texture */
   this->setTexture(MyTexture);
}
由于现在已弃用“CCTextureCache::sharedTextureCache()”(v.3.13.1),您最好从 Director 获取纹理缓存:
auto texture = Director::getInstance()->getTextureCache()->addImage(filePath);
if (texture)
{
    yourSprite->setTexture(texture);
}
来源: http: //www.cocos2d-x.org/wiki/Texture_Cache