2010-01-16 13 views
9

में संकल्प स्वतंत्रता वर्तमान में मैं एंड्रॉइड में एक गेम इंजन शुरू कर रहा हूं, पहले मंच में प्रवेश कर रहा हूं और मूलभूत जगहें हैं हालांकि ग्राफिक्स को आकर्षित करने के लिए SurfaceView का उपयोग करते समय मुझे संकल्प स्वतंत्रता तक पहुंचने का सबसे अच्छा तरीका अनिश्चित है।एंड्रॉइड SurfaceView

कैसे खेल रखने के लिए के रूप में/स्प्राइट आदि सभी की तलाश में एक ही स्क्रीन से स्वतंत्र संकेत के लिए देख रहे हैं, जाहिर है यह सब स्प्राइट हर फ्रेम पैमाने पर या अलग-अलग प्रस्तावों के लिए कई रूपों स्टोर करने के लिए कुशल नहीं होगा

उत्तर

5

जब आप उन्हें लोड करते हैं तो आप केवल sprites को स्केल करेंगे। मुझे लगता है कि आप उन्हें संसाधन से बिटमैप्स के रूप में लोड कर रहे हैं, है ना? यदि ऐसा है तो आपको इसे ऐसा करने की ज़रूरत है:

BitmapFactory.Options options = new BitmapFactory.Options(); 
options.outHeight = spriteHeight * scale; 
options.outWidth = spriteWidth * scale; 

Bitmap sprite = BitmapFactory.decodeResource(mContext.getResources(), R.drawable.sprite, options) 

जहां स्केल स्क्रीन आकार के परिवर्तन पर आधारित है।

+0

चीयर्स केसी, इस समाधान के साथ आपको लगता है कि यह सबसे अच्छा होगा नेक्सस जैसे बड़े एंड्रॉइड संकल्पों के लिए उपयुक्त उच्चतम संभव स्प्राइट्स को शामिल करने के लिए और फिर पुराने उपकरणों के लिए ग्राफिक्स को डाउनस्केल करें? – Tom

+0

मुझे ऐसा लगता है, जब आप उन्हें स्केल करते हैं तो उन्हें स्केल करते समय चीजें बेहतर दिखती हैं। – CaseyB

+0

तो मैंने इस कोड को आजमाया, और प्रलेखन के माध्यम से चला गया .. किसी कारण से स्प्राइट हमेशा एक ही आकार में आउटपुट होता है, भले ही मैं हार्डकोड आउट हो और बाहर चौड़ा चर। – Tom

1

पहले::

दो सरल दृष्टिकोण रहे हैं

एक सतह दृश्य की निर्माण पर, यह कहता है:

onSizeChanged (int w, int h, int oldw, int oldh) 

कुछ वैश्विक चर बनाएँ, x & y इसलिए यदि आप के साथ इस ओवरराइड:

onSizeChanged(int w, int h, int oldw, int oldh){ 
this.w=w; 
this.h=h; 
} 

तो किसी भी ड्राइंग या खेल की गणना में आप w और ज विंडो का उपयोग कर सकते हैं।

दूसरा:

कॉल getWidth() & getHeight() ड्राइंग और खेल की गणना में।

अपने गेम के साथ शुभकामनाएँ!

+0

धन्यवाद लॉरेंस, मुझे लगता है कि मेरा प्रश्न अधिक लक्ष्य है कि स्केलिंग से निपटने के तरीके के बारे में और अधिक लक्ष्य है कि यह गेम सभी प्लेटफार्मों पर समान दिखाई देता है ... – Tom

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