2010-08-12 12 views
5

ठीक कर सकता हूं, तो स्पष्ट रूप से xna गेम केवल 30fps पर चल सकता है, जो शर्म की बात है, क्योंकि आईफोन पर हमारा गेम 60 पर बहुत बेहतर दिखता है ...विंडोज फोन 7, xna, मैं टच स्क्रीन को नियमित रूप से कैसे नियमित रूप से

किसी भी दर पर, क्योंकि टच स्क्रीन स्थिति के बारे में जानकारी प्राप्त करने का एकमात्र तरीका यह है कि इसका वर्तमान स्थिति प्राप्त करें, प्रभावी रूप से इसका मतलब है कि आप केवल 30 एफपीएस पर टच स्क्रीन का नमूना दे सकते हैं।

भले ही हमारे गेम को 30fps पर चलाना पड़े, क्या टच स्क्रीन से उच्च रिज़ॉल्यूशन नमूनाकरण करने का कोई तरीका है? शायद कॉलबैक के माध्यम से? या समय टिकटें के साथ स्पर्श घटनाओं की एक सूची तक पहुंच कर?

उत्तर

0

प्रदर्शन कारणों से 30fps की नमूना दर सेट की गई है।

भले ही आप अधिक बार स्पर्श के लिए पूछने का कोई तरीका ढूंढ सकें, फिर भी आप यूआई को तेज दर से अपडेट नहीं कर पाएंगे, इसलिए मुझे यकीन नहीं है कि आपको क्या लाभ मिलेगा।

समाधान खोजने की कोशिश करने में बहुत अधिक समय खर्च करने से पहले मैं एक वास्तविक डिवाइस पर परीक्षण करता हूं कि यह देखने के लिए कि वास्तव में 30fps कितना स्वीकार्य है।

+0

ओह, हमारे पास है, और समस्या हम है एक निशान की तरह है जो आसपास के स्पर्श का पालन करता है। और 30 एफपीएस पर यह सब बेवकूफ़ है, हमने इसे समय के लिए स्प्लिंस के साथ चिकना कर दिया है, लेकिन यह अभी भी थोड़ा अजीब लगता है कि आप इसे नहीं कर सकते ... आप इसे आईफोन 3 जी पर कर सकते हैं ... और मेरे पास है खाना पकाने के उपकरण जो उससे अधिक संगणकीय रूप से शक्तिशाली हैं ... नरक ... यहां तक ​​कि डीएस ... – matt

+0

आपको याद रखना होगा कि विंडोज ओएस हमेशा आईफोन जैसे हार्डवेयर पर नहीं चल रहा है - अलग-अलग क्षमताओं उपलब्ध होंगे । विचार करने के लिए बैटरी जीवन भी है। –

2

जो फ़ंक्शन आप ढूंढ रहे हैं वह TouchPanel.GetState है। यह 60Hz पर इस फ़ंक्शन को कॉल करने का एक साधारण मामला है।

60 हर्ट्ज प्राप्त करने के लिए आप Game.TargetElapsedTime को दूसरे के 1/60 वें स्थान पर सेट कर सकते हैं। इससे आपको प्रत्येक ड्रॉ के लिए दो अपडेट मिलेंगे (Shawn Hargreaves' post here के अनुसार) यह मानते हुए कि आप 30FPS पर VSyncing हैं।

यदि आप अभी भी अपने गेम स्टेटस अपडेट 30FPS पर चलाना चाहते हैं (केवल 60FPS पर स्पर्श इनपुट कर रहे हैं), तो आप उन अद्यतनों को एक अलग थ्रेड पर रख सकते हैं। Game.Update पर पहली कॉल पर उस थ्रेड पर जाने वाले अपडेट को प्रारंभ करें, और दूसरे के लिए इसे समाप्त करने की प्रतीक्षा करें, और इसी तरह।

(आप नोट करना चाहिए कि सामान्य रूप से XNA इनपुट मुख्य थ्रेड (source) पर किया जाना चाहिए। मैं इस फोन पर लागू होता है और इनपुट को छूने के लिए मान लेते हैं।)

वैकल्पिक रूप से आप बदल सकते Game वर्ग के अपने आप को समय पूरी तरह से (GraphicsDevice.Present स्वयं को कॉल करना)। ऐसा करना आसान नहीं है, लेकिन यह संभव है। शुरू करने के लिए एक अच्छी जगह प्रतिबिंब में Game कक्षा को देखना है।

(अस्वीकरण:। मैं अभी तक किसी भी वास्तविक फोन आधारित विकास प्रयास नहीं किया है, इसलिए कुछ फोन से संबंधित gotchas मैं से अनजान हूँ हो सकता है)

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