我如何在cocos2d中更改精灵的图像?

时间:2011-04-25 20:45:54

标签: xcode cocos2d-iphone

我试过

[[CCTextureCache sharedTextureCache] addImage: @"still.png"];

但出于某种原因,我总是以失真的图像结束。这很可能是因为我的图像分辨率不同,但对于这个应用程序,它们不能拥有相同的分辨率。如何更改精灵的图像,而无需经历制作精灵表格或动画或其中任何一个的复杂过程。

7 个答案:

答案 0 :(得分:16)

urSprite = [CCSprite spriteWithFile:@"one.png"];
urSprite.position = ccp(240,160);
[self urSprite z:5 tag:1];

// Changing the image of the same sprite
[urSprite setTexture:[[CCTextureCache sharedTextureCache] addImage:@"two.png"]];

答案 1 :(得分:10)

这是更改精灵图像的最直接方式(如果你通过spritesheet加载它)这绝对有效(我在游戏中一直使用它)。 mySprite是精灵实例的名称:

  

[mySprite setDisplayFrame:
  [CCSpriteFrameCache   sharedSpriteFrameCache]   spriteFrameByName:@“sprite1.png”]        ];

答案 2 :(得分:6)

您只需调用 sprite.texture 函数。

<强> 实施例

在您的init方法中:

CCTexture2D *tex1 = [[CCTextureCache sharedTextureCache] addImage:@"still.png"];
CCTexture2D *tex2 = [[CCTextureCache sharedTextureCache] addImage:@"anotherImage.png"];
CCSprite *sprite = [CCSprite spriteWithTexture:tex1];
//position the sprite
[self addChild:sprite];

然后将精灵的图像更改为tex2:

sprite.texture = tex2;

非常简单!

希望这有帮助!

答案 3 :(得分:1)

在cocos2d v3中,我能够用...完成此任务。

[mySprite setSpriteFrame:[CCSpriteFrame frameWithImageNamed:@"two.png"]]

...但我不知道这是否有副作用从长远来看会伤害我。 :)

答案 4 :(得分:0)

这个简单的一行可以完成你的任务。

[sprite setTexture:[[CCTextureCache sharedTextureCache] addImage:@"slot.png"]];

答案 5 :(得分:0)

我使用cocos2d 3.0,这段代码对我有用:

 [_mySprite setTexture:[CCTexture textureWithFile:@"myFile.png"]];

答案 6 :(得分:0)

在Cocos2d-x v3中,您可以使用my_sprite->setTexture(sprite_path);