तय करें कि दृश्यता बदलने पर क्या हो
रिफ़्लेक्स गेम में document.visibilityState के hidden होने पर खेल रोकें, उलटी गिनती रोकें, दबाकर रखी गई कुंजियों की स्थिति साफ़ करें और पेज फिर दिखने पर जारी रखने का बटन दिखाएँ। टर्न-आधारित पहेली बिना पॉज़ स्क्रीन दिखाए बोर्ड को जस का तस रख सकती है; साथ ही ध्वनि बंद कर सकती है और एनीमेशन घड़ी रीसेट कर सकती है।
कार्यान्वयन से पहले टाइमर, गतिशील खतरे और दबाई गई कुंजी के लिए अपेक्षित व्यवहार लिखें। फिर प्रत्येक मामले के दौरान दूर चले जाएँ और वापस आ जाएँ। यह छोटा मैट्रिक्स बग पकड़ता है जैसे कि कुंजी का तार्किक रूप से पकड़ में रहना या गेम दिखाई न देने पर टाइमर समाप्त हो जाना।
जारी करने से पहले समय रीसेट करें
visibilitychange इवेंट सुनें और रोकने के फ़ैसले को रेंडरिंग से अलग रखें। लौटने पर पिछले फ़्रेम का टाइमस्टैम्प मौजूदा एनीमेशन टाइमस्टैम्प पर सेट करें, या फिर से शुरू हुए पहले फ़्रेम को घड़ी रीसेट करने के लिए चिह्नित करें। अन्यथा अगले डेल्टा में छिपे रहने का पूरा समय शामिल हो सकता है और वस्तुएँ अचानक खिसक सकती हैं।
केवल धुंधलापन और फोकस पर निर्भर रहने के बजाय पेज विजिबिलिटी एपीआई का उपयोग करें: एक विंडो दृश्यमान रहते हुए फोकस खो सकती है, और दृश्यता बताती है कि दस्तावेज़ वास्तव में छिपा हुआ है या नहीं। किसी भी ऑटोसेव नीति को स्वतंत्र रखें; विराम व्यवहार और दृढ़ता के अलग-अलग उद्देश्य हैं और इनका अलग-अलग परीक्षण किया जाना चाहिए।
ब्राउज़र गेम पृष्ठभूमि टैब रोकें से जुड़े सवाल
क्या requestAnimationFrame एक छिपे हुए टैब में चलता रहेगा?
अधिकांश ब्राउज़र पृष्ठभूमि टैब या छिपे हुए आईफ्रेम में एनीमेशन कॉलबैक को रोकते हैं, और टाइमर कॉलबैक को भी थ्रॉटल किया जा सकता है। उन व्यवहारों को एक सटीक घड़ी के बजाय दृश्यता को संभालने के कारणों के रूप में मानें।
क्या छुपे होने पर हर खेल रुक जाना चाहिए?
कोई भी एक नीति हर डिज़ाइन में फिट नहीं बैठती। उन खेलों को रोकें जहां अदृश्य अनुकरण चुनौती को बदल देता है; टर्न-आधारित खेल के लिए, वर्तमान बोर्ड को संरक्षित करना पर्याप्त हो सकता है। किसी भी स्थिति में, वापसी पर जानबूझकर समय और ऑडियो रीसेट करें।
आगे पढ़ें
कोई पुरानी जानकारी दिखी? सुधार की जानकारी दें