2011-04-25 65 views
9

我試過我如何簡單地更改cocos2d中的精靈圖像?

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

但我總是出於某種原因失真圖像結束。這很可能是因爲我的圖像分辨率不同,但對於此應用程序,它們不能具有相同的分辨率。如何更改精靈的圖像,而無需經過複雜的製作精靈畫面或動畫或其他任何過程。

回答

10

這是改變精靈的形象(如果你有的話加載海槽spritesheet)這肯定工程(我用它在我的遊戲所有的時間)的最直接的方式。 mySprite上是子畫面實例的名稱:

[mySprite上setDisplayFrame:
[[CCSpriteFrameCache sharedSpriteFrameCache] spriteFrameByName:@ 「sprite1.png」] ];

+0

工作機智的動畫時,這是更好的解決方案。如果動畫正在運行並且您想要停止它,請使用它,只是不要忘記停止動畫操作。 – 2013-01-19 06:38:45

6

您只需撥打sprite.texture函數。

在你的初始化方法:

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; 

很簡單!

希望這有助於!

+0

是sprite.texture = TEX2一樣的精靈setDisplayFrame:frameCache spriteFrameByName – OMGPOP 2013-03-01 10:28:57

+0

@OMGPOP是的,我相信如此。但是,這樣做的好處是可以預加載紋理。這真的取決於你的需求。 – tallen11 2013-03-01 22:10:15

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"]]; 
+0

它工作正常...... – 2013-03-14 08:45:28

+0

這個例子仍然在cocos2d v3.0中工作嗎? xcode說:「undeclares標識符'CCTextureCache'」。 – 2014-03-01 16:54:45

0

這個簡單的一行可以完成您的任務。

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

原始帖子有什麼問題?你在這做了哪些改變?@Ankur – 2013-07-18 07:29:24

+0

突出顯示了編碼部分..查看更改請參見[此鏈接](http://stackoverflow.com/posts/17715260/revisions)。 – Ankur 2013-07-18 07:37:19

0

我使用cocos2d的3.0和此代碼的工作對我來說:

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

在cocos2d V3,我能夠用做到這一點...

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

...但我不知道這是否有副作用,從長遠來看會傷害到我。 :)

0

在cocos2d-x V3,你可以使用my_sprite->setTexture(sprite_path);