Oneshot Gems
العب الآن

لمطوري الألعاب

تعامل مع تغيير الحجم بوصفه انتقالًا مضبوطًا في التخطيط

قد يتغير حجم لعبة المتصفح عند تغيير النافذة أو تدوير الجهاز أو ظهور عناصر تحكم المتصفح أو تبدّل تخطيط الصفحة. إذا تغيّر حجم canvas من دون تحديث مخزن الرسم الداخلي وربط الإحداثيات بالإدخال، فقد تتمدد الصورة وتُسجَّل النقرات في مواضع خاطئة. اعتبر الحجم مدخلًا للتخطيط والرسم، ثم حدّث الأنظمة التابعة له معًا. ينبغي ألا يعيد تغيير الحجم ضبط التقدم في اللعبة أو يكرر أعمالًا مكلفة بسبب تقلبات طفيفة في القياس.

في هذه الصفحة

راقب العنصر الذي تستخدمه اللعبة فعليًا

استخدم ResizeObserver عندما يمكن أن يتغير حجم حاوية canvas بمعزل عن النافذة، مثل وجودها داخل لوحة مقسمة أو صفحة تتغير عناصر التحكم فيها. اقرأ حجم المحتوى، ولا تحدّث دقة الرسم الداخلية لـcanvas إلا إذا تغيرت فعلًا، ثم أعد حساب مقياس التحويل بين إحداثيات CSS وإحداثيات عالم اللعبة.

لا تكتب أبعادًا تؤثر في التخطيط إلى العنصر نفسه الذي تراقبه من دون شرط يمنع التكرار. تشير MDN إلى أن تغيير الحجم داخل دالة ردّ المراقب قد ينشئ حلقة؛ لذا جدْول العمل بحذر وتجاوز الكتابة إذا لم يتغير الحجم المتوقع. افصل مساحة عرض اللعبة عن نظام إحداثيات العالم الثابت إذا كان التصميم يقتضي إضافة هوامش بدلًا من تشويه الصورة.

اختبر التخطيط والإدخال كسلوك واحد

في أحجام ضيقة وعريضة وبعد تدوير الجهاز، انقر أو المس هدفًا قرب كل حافة من canvas وتحقق من أن اللعبة تتعرف على إحداثيات العالم نفسها التي يشير إليها العنصر المرئي. غيّر الحجم أثناء اللعب وتأكد من تطبيق سياسة الكاميرا أو الهوامش من دون تحريك المواضع على نحو غير متوقع.

راقب الحاوية بدل افتراض أن window.innerWidth يرصد كل تغييرات التخطيط. إذا غيّرت لوحة مفاتيح الهاتف أو واجهة المتصفح المساحة المتاحة، فقرر هل تصغر مساحة اللعب أم تبقى ثابتة أم تصبح قابلة للتمرير. اختبر القرار مع ظهور عناصر التحكم، لأنها قد تشغل مساحة تحتاج إليها اللعبة.

أسئلة عن ⁨التعامل مع تغيير حجم ألعاب المتصفح⁩

هل ينبغي أن يتغير حجم عالم اللعبة مع كل تغيير لحجم الشاشة؟

لا. تحافظ ألعاب كثيرة على إحداثيات عالم ثابتة ولا تغيّر إلا الكاميرا أو تضيف هوامش. تغيير حجم العالم نفسه قد يؤثر في الصعوبة والتصادمات وتكوين المراحل.

متى يكون ResizeObserver أنسب من معالج حدث تغيير حجم النافذة؟

استخدم ResizeObserver عندما يتغير حجم العنصر المعني بسبب حاويته أو التخطيط المحيط به، حتى لو بقيت أبعاد النافذة الإجمالية كما هي.

للمزيد من القراءة

هل لاحظت معلومة قديمة؟ الإبلاغ عن تصحيح

واصل اللعب.

ألعاب متصفح مجانية جاهزة متى شئت. اعثر على ما يمتعك واجعله لعبتك المفضلة التالية.

اتبع فضولك