2

我想用精灵表中的另一个纹理更改精灵纹理

//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'

请帮我解决这个问题

4

2 回答 2

2

AddImage 接受输入 imageName(NSString) 而不是 sprite(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];
于 2013-03-21T11:21:48.203 回答
2

尝试在 CCSprite 上设置 displayFrame,例如,

[character setDisplayFrame:[[CCSpriteFrameCache sharedSpriteFrameCache] 
                        spriteFrameByName:@"char2.png"];
于 2013-03-21T12:18:49.140 回答