2015-10-09 11 views
7

मुझे UIWebView के साथ कोई समस्या है और एचटीएमएल 5 गेम चल रहा है (वह दूसरा डेवलपर काम कर रहा है)। हमने दो अलग-अलग विकल्पों की कोशिश की है, और न ही इष्टतम है।UIWebView एचटीएमएल 5 गेम आईओएस 9 में कैनवास ड्राइंग धीमा, या आईओएस 8.0 में क्रैशिंग और

विकल्प 1: वह "कैनवास ड्राइंग" के साथ एचटीएमएल 5 गेम प्रस्तुत करता है। जब वह ऐसा करता है, तो कुछ भी क्रैश नहीं होता है, हालांकि आईओएस 9 में जब हम पृष्ठभूमि से ऐप में वापस जाते हैं, तो वेब व्यू बैक अप लेता है, लेकिन गेम सामान्य से बहुत धीमा हो रहा है (आईओएस 7.1 और उसके बाद के संस्करण पर नहीं) । बहुत धीमे से मैं एनीमेशन के बारे में बात कर रहा हूं, वही गति नहीं बढ़ रहा है जब वे पहले गेम लोड करते थे। इस मुद्दे के बारे में अजीब चीज यह है कि यदि उपयोगकर्ता एक अलग HTML 5 गेम खोलता है (हम कई गेम जोड़ रहे हैं) तो एनिमेशन भी उस गेम के लिए धीमे होते हैं। जब मैंने UIAplicationWillResignActiveNotification पोस्ट किया है, तो मैंने वेब व्यू कंट्रोलर को खारिज करने का प्रयास किया है। जब मैं इस तरह से गेम सेट करता हूं, तो धीमापन तब होता है जब ऐप 4 सेकंड के लिए होता है (यह बहुत अजीब है)।

विकल्प 2: वह "वेबजीएल" के साथ गेम प्रस्तुत करता है। जब वह इसे इस तरह प्रस्तुत करता है, तब ऐप क्रैश हो जाता है जब ऐप आईओएस 8.0 और उसके बाद की पृष्ठभूमि पर पृष्ठभूमि हो जाता है। क्रैश में मेरा शोध यह है कि आईओएस पृष्ठभूमि में ओपनजीएल ईएस नहीं खींच सकता है। मुझे लगता है कि वेबजीएल कमांड ओपनजीएल ईएस के समान कमांड चला रहे हैं, इसलिए क्रैश। UIApplicationWillResignActiveNotification पर वेब व्यू कंट्रोलर को खारिज करना अभी भी दुर्घटना होने का कारण बनता है।

क्या किसी और ने कभी इस तरह की स्थिति से निपटाया है?

उत्तर

2

मुझे समस्या का कोई अच्छा समाधान नहीं मिला है, लेकिन मुझे एक काम मिल गया।

जब मैं ऐप को सक्रिय संदेश से इस्तीफा दे दूंगा, तो मैं UIWebViewController के सबव्यू से UIWebView को हटा दूंगा। जब मैं सक्रिय संदेश बन गया, तो मैं UIWebView को UIWebViewController के सबव्यू में जोड़ता हूं।

यह समाधान दोनों मामलों के लिए काम करता है।

+0

इससे आप जावास्क्रिप्ट की घटनाओं को ट्रिगर कर सकते हैं जो एनीमेशन को रोकें और पुनरारंभ करें ताकि ओपनजीएल ईएस विधि –

+0

का उपयोग करते समय ऐसा नहीं होता है। हमने जो समाधान किए हैं, उनमें से एक था वेब पर जावास्क्रिप्ट फ़ंक्शन को कॉल करके राय)। समारोह एक विराम स्क्रीन लाएगा। जब हमने इस समाधान की कोशिश की तो वही समस्याएं हो रही थीं। –

+0

हाँ यदि आप एक विराम स्क्रीन लाते हैं तो आपके पास अभी भी एक विराम स्क्रीन खींचने वाला ड्रॉ लूप हो सकता है। मैं जो कहने की कोशिश कर रहा था वह था 'सेटटाइमआउट(); का उपयोग करके अपने ड्रॉ लूप को बनाना था, फिर आप एक विराम विधि डाल सकते हैं जो' clearTimeout(); 'कहता है और आपका रेज़्यूम सिर्फ आपके ड्रॉ विधि को कॉल करता है जो इसके अंत में ' setTimeout' हालांकि परीक्षण के बिना यह मेरे अनुभव के आधार पर सभी सिद्धांत है। :) मैं इसका उपयोग करने के लिए नहीं कह रहा हूं लेकिन मेरे पास डेल्टाटाइम और टाइमआउट आधारित प्रबंधन का उपयोग करके 2 डी में ड्रॉ कॉल का कार्यान्वयन है http://650h.rs/1R1f1uv –

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