2013-03-21 4 views
2

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

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

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

, но это дает мне error.I попытались без spriteWithSpriteFrameName, и это дает мне пустую текстуру.

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

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

+0

Попробую [CCSprite spriteWithFile: @ "char1 .png "]; ? –

+0

Это работает, но я хочу называть текстуру из спрайта – Hassy31

+0

Все в порядке с sharedSpriteFrameCache? Как добавить туда рамки? Кроме того, если у него есть проблема с последним компонентом пути, попробуйте quickfix @ «char1», возможно, у него есть такое имя в framechache –

ответ

2

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

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

AddImage принимает входной ImageName (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]; 
+0

спасибо за ответ. Как я упомянул в своем вопросе, выше код дает перемещение черной пустой текстуры. – Hassy31

+0

убедитесь, что лист спрайта уже загружен, положение и порядок орфографии справки верны - – Guru

+0

Благодарю вас, у вас нет таких объектов, но он не обновляет текстуру. – Hassy31

Смежные вопросы