如何交换雪碧在cocos2d-X的CCSprite对象(How to swap the sprite

2019-07-29 06:30发布

我有一个从CCSprite继承的对象。 我从这个对象内部要改变形象。

如何改变形象(精灵),而无需创建在cocos2d-x的新CCSprite对象?

谢谢,阿德里安。

Answer 1:

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

无需改变你的自定义类..希望这会有所帮助.. :)



Answer 2:

对我的作品:

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

之前,你需要加载你的精灵在缓存:

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


Answer 3:

我发现,我离开这里,以防有人受到同样的问题卡住:

里面这是一个从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);
}


Answer 4:

由于“CCTextureCache :: sharedTextureCache()”现在已经过时(v.3.13.1)你最好署长纹理缓存:

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

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

来源: http://www.cocos2d-x.org/wiki/Texture_Cache



文章来源: How to swap the sprite in the CCSprite object in Cocos2d-X