2011-09-25 15 views
13

मैं एक एनीमेशन खेल रहा हूं। एनीमेशन में लगभग 12 फ्रेम हैं, और प्रत्येक फ्रेम बल्कि बड़ा है। वास्तव में, प्रत्येक फ्रेम का -hd संस्करण काफी बड़ा है।CCSpriteBatchNode का उपयोग कब करें? Cocos2d में

वैसे भी, मैंने इसे ज़्वोपटेक्स का उपयोग करके सभी 12 फ्रेम बनाकर बना दिया। बनावट लगभग 2048x2048 है।

ऐसा इसलिए है कि मैं उस बनावट का उपयोग कर एक CCSpriteBatchNode में एक CCSprite को एनिमेट कर सकता हूं।

लेकिन मुझे एक स्तर 2 मेमोरी चेतावनी मिल रही है।

अब मुझे लगता है कि, मुझे नहीं लगता कि CCSpriteBatchNode एक स्प्राइट के लिए उपयोग किया जाना चाहिए था। मुझे लगता है कि यह केवल उपयोगी था अगर आप एक ही बनावट का उपयोग करने वाले बहुत सारे sprites आकर्षित करना चाहते थे।

तो मैं जानना चाहता हूं: क्या मुझे फ्रेम द्वारा स्प्राइट फ्रेम को एनिमेट करना चाहिए (कोई विशाल बनावट नहीं है)? या क्या उस विशाल बनावट का उपयोग करना संभव है लेकिन एक अलग तरीके से?

उत्तर

24

आप CCSpriteBatchNode के बारे में सही हैं। CCSpriteBatchNode बैच नोड की तरह है: यदि इसमें बच्चे शामिल हैं, तो यह उन्हें 1 सिंगल ओपनजीएल कॉल (जिसे अक्सर "बैच ड्रा" के नाम से जाना जाता है) में खींचा जाएगा, सीसीएसप्रिटबैचनोड (इस मामले में) की अनुपस्थिति में सभी "बैच ड्रा" को बुलाया जाएगा बच्चों की संख्या के रूप में कई बार (sprites)।

एक CCSpriteBatchNode एक और केवल एक बनावट (एक छवि फ़ाइल, एक बनावट एटलस) का संदर्भ दे सकता है यानी zwoptex द्वारा बनाई गई स्प्राइट शीट। केवल उस बनावट में निहित सीसीएसप्रिट्स को CCSpriteBatchNode में जोड़ा जा सकता है। एक CCSpriteBatchNode में जोड़े गए सभी CCSprites एक ओपनजीएल ES ड्रॉ कॉल में खींचे जाते हैं। यदि CCSprites को CCSpriteBatchNode में नहीं जोड़ा गया है तो प्रत्येक के लिए ओपनजीएल ES ड्रॉ कॉल की आवश्यकता होगी, जो कम कुशल है।

आपके परिदृश्य के अनुसार, आपको CCSpriteBatchNode का उपयोग करने की आवश्यकता नहीं है क्योंकि किसी भी समय केवल एक बनावट प्रदान की जाती है।

तो मैं जानना चाहता हूं: क्या मुझे फ्रेम द्वारा स्प्राइट फ्रेम को एनिमेट करना चाहिए (कोई विशाल बनावट नहीं है)? या क्या उस विशाल बनावट का उपयोग करना संभव है लेकिन एक अलग तरीके से?

इससे कोई फर्क नहीं पड़ता। आप वैसे भी 2048 x 2048 बनावट लोड करेंगे। विचार करने का मुद्दा यह है कि केवल एक 2048 x 2048 बनावट आपको स्तर 2 चेतावनी दे रही है? आप कितने बनावट लोड कर रहे हैं। बीटीडब्ल्यू 2048 एक्स 2048 केवल आईपॉड 3 जी/आईफोन 3 जीएस पर समर्थित है (जो ठीक है)।

यदि आप कई बनावट लोड कर रहे हैं (जो मुझे सच लगता है)। आपको कुछ तर्क प्रोग्राम करने की आवश्यकता है जहां आप आवश्यक होने पर बनावट को अनलोड कर सकते हैं। जहां तक ​​एनीमेशन का सवाल है (अपने परिदृश्य के आधार पर) आप setDisplayFrame (CCSpriteFrame फ्रेम) का उपयोग कर सकते हैं CCAnimation बना सकते हैं और है कि उपयोग कर सकते हैं या

[[CCSpriteFrameCache sharedSpriteFrameCache] removeSpriteFramesFromFile:fileName]; 
[[CCSpriteFrameCache sharedSpriteFrameCache] removeUnusedSpriteFrames]; 
[[CCTextureCache sharedTextureCache] removeUnusedTextures]; 

;: निम्न विधियों पर ध्यान करो

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