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];