0%
المدخلات: لوحة المفاتيح واللمس وعصا التحكم — الفصل 30

الفصل 30 — المدخلات: لوحة المفاتيح واللمس وعصا التحكم

الجزء 2B — محرك Flame · الفصل 30 من 62 · 8 ساعات

الفصل 30 — المدخلات: لوحة المفاتيح واللمس وعصا التحكم

المستوى: متوسط المدة المقدّرة: 8 ساعات المتطلبات المسبقة: الفصول 27 إلى 29 (تثبيت Flame، وFlameGame، والمكوّنات ودورة الحياة، والـ sprites والأصول)، والفصل 26 (مدير المدخلات وآلة الحالات)، والفصل 23 (المتجهات والتطبيع) إصدار Flame المستخدم: 1.38.0 ما ستكون قادرًا على فعله في النهاية: التحكم ببطل «زنزانة دارت» بلوحة المفاتيح على الحاسوب، وبالإصبع وعصا التحكم على الجوال، مع زر هجوم، دون كتابة منطق الحركة مرتين.


30.0 — أهداف الفصل

في نهاية هذا الفصل ستكون قادرًا على:

  • تعداد أجهزة الإدخال المتاحة على المنصات الثلاث المستهدفة؛
  • شرح سبب وجوب عدم الخلط بين النية والمفتاح؛
  • ربط KeyboardEvents بفئة FlameGame واختيار القيمة الصحيحة من KeyEventResult؛
  • التمييز بين KeyDownEvent وKeyUpEvent وKeyRepeatEvent؛
  • تسمية مفتاح باستخدام LogicalKeyboardKey وفهم الفرق بينه وبين PhysicalKeyboardKey؛
  • دعم تخطيطات ZQSD وWASD والأسهم في وقت واحد؛
  • قراءة المجموعة keysPressed بدل التفاعل مع الحدث، وتبرير هذا الاختيار؛
  • استخدام KeyboardHandler على مكوّن وHasKeyboardHandlerComponents على اللعبة، دون خلطهما مع KeyboardEvents؛
  • كتابة بطل يتحرك بلوحة المفاتيح، بشيفرة كاملة قابلة للتنفيذ؛
  • إصلاح خطأ القطر السريع أكثر من اللازم عبر التطبيع؛
  • جعل مكوّن يستجيب للنقر باستخدام TapCallbacks والتفاعل مع onTapDown وonTapUp وonTapCancel؛
  • معرفة أن TapDetector لم يعد موجودًا على مستوى اللعبة في Flame 1.38.0 ومعرفة البديلين؛
  • تحويل إحداثيات النقر بين الإحداثيات المحلية وإحداثيات اللوحة (canvas) وإحداثيات العالم؛
  • تحريك مكوّن بالإصبع باستخدام DragCallbacks؛
  • الاستجابة للتحويم باستخدام HoverCallbacks وتتبّع المؤشر باستخدام PointerMoveCallbacks؛
  • التعامل مع النقر الأيمن عبر SecondaryTapCallbacks ومع عجلة الفأرة عبر ScrollCallbacks؛
  • بناء JoystickComponent دون أي صورة، مع knob وbackground ومنطقة ميتة؛
  • استثمار relativeDelta وintensity وdirection؛
  • وضع عصا التحكم في HUD لا في العالم، وتبرير ذلك؛
  • بناء زر هجوم باستخدام HudButtonComponent وتثبيت عنصر باستخدام HudMarginComponent؛
  • اكتشاف المنصة لاختيار عناصر التحكم التي ستُعرض؛
  • توفير إعادة ربط المفاتيح وتجميع كل ذلك في «زنزانة دارت».

التعليقات

التعليقات مدعومة عبر GitHub Discussions

سجّل الدخول باستخدام GitHub للمشاركة في النقاش

تم نسخ الرابط!