حدّد ما يتغير عند تبدل الرؤية
في لعبة تعتمد على سرعة الاستجابة، أوقف اللعب مؤقتاً عندما تصبح قيمة document.visibilityState هي hidden، وأوقف العد التنازلي وامسح حالة المفاتيح المضغوطة، ثم اعرض زر استئناف عندما تصبح الصفحة مرئية مجدداً. أما اللغز القائم على الأدوار فيمكنه إبقاء اللوحة كما هي من دون شاشة إيقاف مؤقت، مع كتم الصوت وإعادة ضبط ساعة الرسوم المتحركة.
قم بتدوين السلوك المتوقع للمؤقت وخطر الحركة والمفتاح المضغوط قبل التنفيذ. ثم قم بالتبديل أثناء كل حالة والعودة. تكتشف هذه المصفوفة الصغيرة الأخطاء، مثل بقاء المفتاح معلقًا بشكل منطقي أو انتهاء صلاحية المؤقت عندما تكون اللعبة غير مرئية.
أعد ضبط التوقيت قبل الاستئناف
استمع إلى حدث visibilitychange وافصل قرار الإيقاف المؤقت عن الرسم. عند العودة، عيّن الطابع الزمني للإطار السابق إلى طابع الرسوم المتحركة الحالي، أو علّم أول إطار بعد الاستئناف لإعادة ضبط الساعة. وإلا فقد يتضمن دلتا التحديث التالية كامل مدة الإخفاء، فتتحرك الكائنات فجأة.
استخدم واجهة برمجة تطبيقات رؤية الصفحة بدلاً من الاعتماد فقط على التمويه والتركيز: يمكن أن تفقد النافذة التركيز بينما تظل مرئية، وتوضح الرؤية ما إذا كان المستند مخفيًا بالفعل. حافظ على استقلالية أي سياسة للحفظ التلقائي؛ سلوك الإيقاف المؤقت والمثابرة لهما أغراض مختلفة ويجب اختبارهما بشكل منفصل.
أسئلة عن إيقاف علامة تبويب خلفية لعبة المتصفح مؤقتًا
هل سيستمر requestAnimationFrame في العمل في علامة تبويب مخفية؟
تقوم معظم المتصفحات بإيقاف عمليات الاسترجاعات المتحركة في علامات تبويب الخلفية أو إطارات iframe المخفية، وقد يتم أيضًا تقييد عمليات الاسترجاعات المؤقتة. تعامل مع هذه السلوكيات كأسباب للتعامل مع الرؤية وليس كساعة دقيقة.
هل يجب أن تتوقف كل لعبة مؤقتًا عند إخفائها؟
لا توجد سياسة واحدة تناسب كل تصميم. إيقاف الألعاب مؤقتًا حيث تغير المحاكاة غير المرئية التحدي؛ بالنسبة للعب القائم على الأدوار، قد يكون الحفاظ على اللوحة الحالية كافيًا. في كلتا الحالتين، قم بإعادة ضبط التوقيت والصوت عمدًا عند العودة.
للمزيد من القراءة
هل لاحظت معلومة قديمة؟ الإبلاغ عن تصحيح