2012-05-04 16 views

Respuesta

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

No hay necesidad de alterar su clase personalizada .. Espero que esto ayude .. :)

+0

Sí lo hace. Es más elegante que la forma en que solía solucionar mi problema. Gracias. – azelez

+0

acepta la respuesta y ciérrala, de lo contrario la gente seguirá publicando respuestas ... :) –

1

me enteré, y lo dejo aquí por si alguien se queda atascado con el mismo problema:

Dentro de su objeto que ha heredado de objeto CCSprite, escribir una función de la siguiente manera

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

Obras para mí:

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

antes de tener que cargar en la memoria caché que los sprites:

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

Para cocos2d-x 3.x: 'mySprite-> setSpriteFrame (" frame_name ");' –

0

Desde "CCTextureCache :: sharedTextureCache()" ahora es obsoleto (v.3.13.1) será mejor que la memoria caché de la textura del director:

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

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

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

Cuestiones relacionadas