How to swap the sprite in the CCSprite object in Cocos2d-X

早过忘川 提交于 2019-12-03 12:16:35
mySprite->setTexture(CCTextureCache::sharedTextureCache()->addImage("newImage.png"));

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

Works for me:

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

Before you need to load you sprites in cache:

CCSpriteFrameCache::sharedSpriteFrameCache()->addSpriteFramesWithFile("sprite_atlas.plist");

I found out, and I leave it here in case somebody gets stuck with the same problem:

Inside your object that's inherited from CCSprite object, write a function as follows

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);
}

Since "CCTextureCache::sharedTextureCache()" is now deprecated (v.3.13.1) you'd better get the texture cache from the Director:

auto texture = Director::getInstance()->getTextureCache()->addImage(filePath);

if (texture)
{
    yourSprite->setTexture(texture);
}

Source: http://www.cocos2d-x.org/wiki/Texture_Cache

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!