33 votes

Changer l'image d'un CCSprite

J'ai créé un certain nombre de sprites CCS en utilisant spriteWithFile.

Comment changer l'image du sprite pendant l'exécution ?

Je dois changer quelques images de sprites assez régulièrement.

58voto

Van Do Points 576
CCTexture *tex = [CCTexture textureWithFile:fileName];
self.texture = tex;

5 votes

Que faire si la texture est de taille différente de la précédente ?

10 votes

@FaheemRajput Si les sprites sont de taille différente, vous devrez le faire après avoir appelé la fonction setTexture --- [spriteWant2Change setTextureRect:CGRectMake(0, 0, tex.contentSize.width, tex.contentSize.height)];---

0 votes

@Arslan votre commentaire est très utile. Merci. :)

14voto

Clever Points 934

Si vous utilisez des SpriteSheets, cela fonctionnera.

NSString* newSprite = [NSString stringWithString:@"SPRITE_NAME.png"];
CCSpriteFrameCache* cache = [CCSpriteFrameCache sharedSpriteFrameCache];
[sprite setDisplayFrame:[cache spriteFrameByName:newSprite]];

0 votes

Si je n'utilise pas SpriteSheets, que dois-je faire ?

9voto

Zeeshan Points 385
[yourSprite setTexture:[[CCSprite spriteWithFile:@"yourImage.png"]texture]];

1 votes

Cocos2d v3 serait : [votreSprite setTexture :[[CCSprite spriteWithImageNamed:nomdefichier]texture]] ;

4voto

Singhak Points 911

Dans COCOS2D-X, vous pouvez le faire de la manière suivante

CCTexture2D *tex = CCTextureCache::sharedTextureCache()->addImage("xyz.png");
sprit_name->setTexture(tex);

Si vous voulez changer la taille du sprite, écrivez aussi cette ligne.

sprit_name->setTextureRect(CCRectMake(0,0, tex->getContentSize().width, tex->getContentSize().height));

1voto

mostafa88 Points 159

Je code cocos2D-x en c++ : lorsque vous utilisez une feuille de sprite au lieu d'utiliser un seul fichier, vous devez utiliser cette méthode. Supposons que vous ajoutez votre spriteSheet dans le calque principal.

CCSpriteFrameCache::sharedSpriteFrameCache()->addSpriteFramesWithFile("sprite_sheet.plist");
_gameBatchNode = CCSpriteBatchNode::create("sprite_sheet.png", 200);
this->addChild(_gameBatchNode, kMiddleground);

kMiddleground est juste un nombre entier défini.

Ensuite, je veux changer l'image d'un sprite qui a déjà un sprite avec le nom "cloud.png". J'utilise ce code pour le faire :

cloud->setDisplayFrame(CCSpriteFrameCache::sharedSpriteFrameCache()->spriteFrameByName("blackCloud.png") );

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X