2011-04-25 18 views
9

मैंमैं cocos2d में बस एक स्प्राइट की छवि कैसे बदलूं?

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

की कोशिश की है लेकिन मैं हमेशा किसी कारण से एक विकृत छवि के साथ खत्म। यह सबसे अधिक संभावना है क्योंकि मेरी छवियां एक ही संकल्प नहीं हैं, लेकिन इस ऐप के लिए, उनके पास एक ही res नहीं हो सकता है। स्प्राइटशीट या एनीमेशन या उसमें से किसी भी को बनाने की जटिल प्रक्रिया के बिना मैं स्प्राइट की छवि कैसे बदलूं।

उत्तर

10

यह एक स्प्राइट की छवि को बदलने के लिए सबसे आसान तरीका है (यदि आपने इसे एक स्प्राइटशीट खोला है) यह निश्चित रूप से काम करता है (मैं इसे अपने गेम में हर समय उपयोग करता हूं)।

[mySprite setDisplayFrame:
[[CCSpriteFrameCache sharedSpriteFrameCache] spriteFrameByName: @ "sprite1.png"] ] mySprite स्प्राइट उदाहरण का नाम है;

+0

उपयोग कर सकते हैं यह बेहतर समाधान है जब बुद्धि एनिमेशन काम कर रहे। अगर एनीमेशन चल रहा है तो इसका इस्तेमाल करें और आप इसे रोकना चाहते हैं, बस एनीमेशन एक्शन को रोकना न भूलें। –

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; 

बहुत आसान!

आशा है कि इससे मदद मिलेगी!

+0

sprite.texture = tex2 sprite setDisplayFrame जैसा ही है: फ्रेम कैश स्प्राइटफ्रेम नाम – OMGPOP

+0

@OMGPOP हां, मुझे विश्वास है। हालांकि, इसका लाभ यह है कि आप बनावट को प्रीलोड कर सकते हैं। यह वास्तव में आपकी जरूरतों पर निर्भर करता है। – tallen11

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

यह ठीक काम करता है ...... –

+0

क्या यह उदाहरण अभी भी cocos2d v3.0 में काम करता है? एक्सकोड कहता है "अनदेखा पहचानकर्ता 'सीसीटीटेक्चर कैश'"। –

0

यह आसान एक पंक्ति आपके काम कर सकती है।

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

मूल पोस्ट के साथ क्या गलत था? आप इस में क्या परिवर्तन करते हैं[email protected] –

+0

कोडिंग भाग को हाइलाइट किया गया .. परिवर्तन देखने के लिए [यह लिंक] (http://stackoverflow.com/posts/17715260/revisions) देखें। – Ankur

0

मैं Cocos2d 3.0 का उपयोग करें और इस कोड को मेरे लिए काम करता है:

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

Cocos2d v3 में, मैं के साथ यह पूरा करने में सक्षम था ...

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

... लेकिन मुझे नहीं पता कि इसका साइड इफेक्ट्स है जो मुझे लंबे समय तक चोट पहुंचाएगा। :)

संबंधित मुद्दे