اجعل عملية التنظيف متماثلة الأثر عند تكرارها
عندما يبدأ pointerdown عملية سحب، قم بتخزين pointerId النشط والكائن أو الإجراء الذي يمتلكه. يجب على كل من pointerup وpointercancel إنهاء هذا التفاعل ومسح حالته. اكتب دالة التنظيف بحيث يكون استدعاؤها بعد انتهاء العملية آمنًا ولا يسبب آثارًا جانبية؛ يؤدي هذا إلى تبسيط التعامل مع فقدان الالتقاط وتغييرات النوافذ والتنظيف الدفاعي المتكرر.
في حالة استخدام التقاط المؤشر، استمع إلى lostpointercapture كإشارة أخرى إلى أن التفاعل لم يعد يمتلك المؤشر. لا تفسر الإلغاء على أنه إفلات ناجح ما لم تحدد اللعبة هذه النتيجة صراحةً. قد يؤدي السحب الملغى إلى إرجاع كائن إلى موضع البداية أو الاحتفاظ بآخر موضع صالح أو إلغاء الحركة؛ اختر قاعدة واحدة وقم بتوصيلها من خلال إشارة مرئية.
اختبار الاستيلاء على إيماءة المتصفح
جرّب السحب الذي يبدأ على سطح اللعبة ويستمر نحو حافة الشاشة، وتمرير الصفحة رأسيًا الذي يبدأ على السطح، والتدوير أثناء الضغط، ولمس الإصبع الثاني في مكان آخر. تأكد من عدم استمرار أي شخصية في التحرك وعدم استمرار الضغط على أي زر بعد الإلغاء.
تؤثر الخاصية touch-action على الإيماءات التي يتعامل معها المتصفح. يوضح MDN أن المتصفحات يمكنها إرسال pointercancel عند تولي التحريك أو التكبير/التصغير. تعامل مع الإلغاء كنتيجة طبيعية يجب أن يتعامل معها نموذج التفاعل الخاص بك.
أسئلة عن إلغاء المؤشر في الألعاب
هل هل يعني pointercancel أن pointerup فشل؟
إنها إشارة منفصلة إلى أن المؤشر لن يستمر في التفاعل الحالي. قم بتشغيل عملية التنظيف وتطبيق قاعدة الإلغاء الخاصة باللعبة بدلاً من افتراض اكتمال الإجراء.
هل يمكن أن تمنع عملية اللمس إلغاء كل مؤشر؟
لا، فهو يوجه معالجة المتصفح لإيماءات اللمس، ولكن لا يزال من الممكن أن تؤدي الحالات الأخرى إلى إنهاء تسليم المؤشر. استمر في التعامل مع الإلغاء حتى عندما يكون لسطح اللعبة قواعد إيماءات مخصصة.
للمزيد من القراءة
هل لاحظت معلومة قديمة؟ الإبلاغ عن تصحيح