2013-03-21 46 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“]; ? – 2013-03-21 11:31:57

+0

它的工作原理,但我想调用spritesheet的纹理 – Hassy31 2013-03-21 11:35:09

+0

一切都好sharedSpriteFrameCache?你如何在那里添加框架?此外,如果它与最后一个路径组件有问题,请尝试quickfix @“char1”,也许它在framechache – 2013-03-21 11:37:01

回答

2

尝试在CCSprite设置displayFrame,例如,

[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 2013-03-21 11:28:36

+0

确保精灵表已经加载,精灵的位置和z顺序是正确的 - – Guru 2013-03-21 11:31:02

+0

谢谢你。错误消失了,但它没有更新纹理。 – Hassy31 2013-03-21 11:38:25