cocos2d изменить текстуру спрайта

Я хочу изменить текстуру спрайта другой текстурой из листа спрайта

//normal sprite
character = [CCSprite spriteWithSpriteFrameName:@"char1.png"];

//change texture
[character setTexture:[[CCTextureCache sharedTextureCache] addImage:[CCSprite spriteWithSpriteFrameName:@"char2.png"]]];

но это дает мне ошибку. Я пробовал без spriteWithSpriteFrameName, и это дает мне пустую текстуру.

//error
Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[CCSprite lastPathComponent]: unrecognized selector sent to instance 0xab32580'

пожалуйста, помогите мне решить эту проблему

2 ответа

Решение

Попробуйте установить displayFrame на CCSprite, например,

[character setDisplayFrame:[[CCSpriteFrameCache sharedSpriteFrameCache] 
                        spriteFrameByName:@"char2.png"];

AddImage принимает входное имя изображения (NSString), а не спрайт (CCSprite).

[[CCTextureCache sharedTextureCache] addImage:TEX_IMAGE_NAME]; 

Вот некоторый полезный код для вас, чтобы решить вашу проблему:

CCSprite *sprite = [CCSprite spriteWithSpriteFrameName:@"char2.png"];
[crane setTexture:sprite.texture]; //Already allocated memory? if not thn try below
//crane = [CCSprite spriteWithTexture:sprite.texture];
//crane = [CCSprite spriteWithTexture:sprite.texture rect:rect];
Другие вопросы по тегам