我有一个从 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