2012-03-07 9 views
6

में एसेट मैनेजर मैं लीगडीएक्स में AssetManager कक्षा का उपयोग करने की कोशिश कर रहा हूं और मैं समझता हूं कि यह कैसे काम करता है लेकिन मैं लोडिंग स्क्रीन को लागू करने की कोशिश कर रहा हूं। मैंने AssetManagerTest.java फ़ाइल here, का पालन किया है, लेकिन मुझे यह पता लगाने की कोशिश कर रहा है कि इसे सही तरीके से कैसे काम किया जाए। क्या कोई मुझे सही दिशा दिखा सकता है? मेरा लक्ष्य संपत्ति (बनावट, ध्वनियां, फोंट, ... आदि) लोड करना है और स्क्रीन पर पूर्ण प्रतिशत के साथ एक बार अपडेट करना है। मुझे प्रदान किए गए लिंक में ResolutionFileResolver और Resolution[] समझ में नहीं आता है। यह किस लिए हैं? मेरा लक्ष्य एक स्थिर वर्ग का समर्थन करना है जो मुझे किसी भी स्क्रीन से मेरे गेम में आवश्यक सभी संपत्तियों तक पहुंच प्रदान कर सकता है। क्या ऐसा करने के लिए कोई पसंदीदा तरीका है? धन्यवाद।लिबजीडीएक्स

उत्तर

7

ResolutionFileResolver के साथ-साथ अन्य 'रिज़ॉलर्स' के स्रोत को देखने के बाद, मुझे लगता है कि यह स्क्रीन रेज़ोल्यूशन से सबसे अच्छी तरह से बनावट लोड करने का एक तरीका है, लेकिन यह मैच केवल फ़ाइल नाम पैटर्न पर आधारित है।

तो AssetManagerTest में, उसे स्क्रीन आकार 320x480, 480x800, और 480x854 के लिए बनावट मिल गई है। ऐसा लगता है कि बनावट के प्रत्येक समूह को ".320480" या ".480800" या ".480854" नामक निर्देशिका में होना चाहिए (हालांकि नाम कुछ भी हो सकता है, जैसे "कम", "उच्च", और "चौड़ा" यदि वे आपकी निर्देशिका हैं), और परीक्षण के line 56 पर रिज़ॉल्यूशन की सरणी बनाते समय वह यह सारी जानकारी निर्दिष्ट करता है।

इन सभी चीजों को करने का लाभ यह है कि जब वह manager.load() पर कॉल करता है, तो वह सिर्फ "डेटा/एनीमेशन.png" जैसे फ़ाइल नाम निकालता है। फिर रिज़ॉल्यूवर को बनावट का पैक मिलता है जो वर्तमान स्क्रीन रिज़ॉल्यूशन से सबसे नज़दीकी से मेल खाता है, और उसे लोड करता है।

मुझे लगता है कि शेष उदाहरण कम से कम AssetManager की मूल बातें के लिए स्पष्ट होना चाहिए। प्रबंधक बनाएं, लोडर सेट करें, load() पर कॉल करें, इसका उपयोग करने के लिए get() पर कॉल करें, और फिर पूरा होने पर unload() पर कॉल करें।

प्रगति पट्टी को अपडेट करने के लिए, आपको प्रत्येक कॉल लोड होने के बाद मैन्युअल रूप से ऐसा करने की आवश्यकता होगी।

और संपत्ति प्रबंधन के लिए एक स्थिर वर्ग का उपयोग निश्चित रूप से एक संभावना है। एक और समान विकल्प सिर्फ एक सिंगलटन का उपयोग करना है। इसमें इसके नफरत हैं, लेकिन मुझे लगता है कि एक कचरा एकत्रित वातावरण में एक साधारण परियोजना में यह ठीक होना चाहिए, हालांकि यह एक सार्वजनिक स्थिर के समान है।

एक और विकल्प - शायद सबसे अच्छा? - एक बेस क्लास का उपयोग करना है जिसमें आपके गेम ग्लोबल्स की एक स्थिर प्रति है, और फिर अन्य सभी गेम क्लास इसके उत्तराधिकारी हैं। यह प्रतिकृति द्वीप में उपयोग किया जाने वाला दृष्टिकोण है। base class और object registry देखें। प्रतिकृति द्वीप अच्छी तरह से टिप्पणी की है और एंड्रॉइड & जावा गेम के लिए जाँच करने लायक है।

+1

धन्यवाद बहुत कुछ चीजों को साफ़ करता है। मुझे यह काम करने के लिए मिला और मैंने आपके सुझाव का उपयोग किया और बेस क्लास भी बनाया, मुझे वाकई यह पसंद है, बहुत साफ दिखता है। सहायता के लिए धन्यवाद! –