10

我有一个从 CCSprite 继承的对象。我想从这个对象内部改变图像。

在 Cocos2d-X 中如何在不创建新 CCSprite 对象的情况下更改图像(精灵)?

谢谢,阿德里安。

4

4 回答 4

12
mySprite->setTexture(CCTextureCache::sharedTextureCache()->addImage("newImage.png"));

No need to alter your custom class.. Hope this helps.. :)

于 2012-05-05T09:45:11.090 回答
2

为我工作:

mySprite->setDisplayFrame(CCSpriteFrameCache::sharedSpriteFrameCache()->spriteFrameByName("frame_name"));

在需要将精灵加载到缓存中之前:

CCSpriteFrameCache::sharedSpriteFrameCache()->addSpriteFramesWithFile("sprite_atlas.plist");
于 2014-07-23T07:26:03.860 回答
1

我发现了,我把它留在这里,以防有人遇到同样的问题:

在继承自 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);
}
于 2012-05-04T21:24:45.830 回答
0

由于现在已弃用“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

于 2016-11-21T03:12:12.607 回答