خطوات إبداعية عملية
مدة إطارات الشخصية المتحركة: افحص GIF المحفوظ

أربعة إطارات لا تستلزم أربع مدد متساوية. ينبغي للفانوس الوامض أن يبقى في حالة الفتح أطول من حالة نصف الإغلاق؛ فقد تحوّل المدد المتساوية ومضة قصيرة إلى نبض بطيء.
أنشأنا في Ciyo فانوساً خيالياً بأربعة إطارات وفحصنا GIF الفعلي بعد تنزيله. تدوم حالات مفتوح ونصف مغلق ومغلق ونصف مغلق 600 و100 و200 و100 مللي ثانية. الدورة الكاملة ثانية واحدة. هذا مثال توقيت مولّد بالكود، وليس مقارنة نماذج فيديو.
افصل ترتيب الإطارات عن مدتها
اكتب الترتيب والمدة معاً. يمكن لشريط PNG عرض ترتيب الصور، لكنه لا يثبت مدة ظهور أي إطار. احفظ قائمة التوقيت بجوار الرسم عند الانتقال بين الأدوات.
نكرر عمداً حالة نصف الإغلاق. تبدو الحالتان متماثلتين، لكن لكل منهما موضع مختلف في التسلسل. حافظ على ذلك الترتيب عند فحص الملف المرمّز.
| الإطار | الحالة | المدة | النهاية التراكمية |
|---|---|---|---|
| 0 | مفتوح | 600 مللي ثانية | 600 مللي ثانية |
| 1 | نصف مغلق | 100 مللي ثانية | 700 مللي ثانية |
| 2 | مغلق | 200 مللي ثانية | 900 مللي ثانية |
| 3 | نصف مغلق | 100 مللي ثانية | 1,000 مللي ثانية |
أنشئ حركة أصلية ونسخة للعرض
في مشروع Ciyo جديد، اطلب GIF بحجم 32×32 وشريطاً بأربعة إطارات بحجم 128×32 ومعاينة 256×256 بطريقة أقرب جار. حافظ على لوحة الألوان ونقطة تثبيت الرسم. تساعد النسخة المكبّرة في فحص البكسلات؛ ولا ينبغي أن تحل محل ملف اللعبة الأصلي بصمت.
اطلب من الوكيل إعادة فتح GIF بعد حفظه والإبلاغ عن عدد الإطارات المرمّزة ومددها وإعداد التكرار. يكشف ذلك سلوكاً في التصدير لا يثبته شريط يبدو صحيحاً.

استخدم الكود فقط لإنشاء حركة فانوس وامض خيالي بفن البكسل، شفافة بحجم 32x32 ومن 4 إطارات. حافظ على ثبات موضع الرسم ولوحة الألوان؛ ترتيب الحالات مفتوح ونصف مغلق ومغلق ونصف مغلق. المدد [600,100,200,100] مللي ثانية، مع تكرار إلى أجل غير محدد ودورة إجمالية 1000ms. سلّم GIF الأصلي وشريط PNG من 4 إطارات وGIF معاينة مكبّراً 8x بطريقة أقرب جار. ضع الشريط والمعاينة على اللوحة، وأظهر روابط التنزيل وكرّر بيان التوقيت في الرد. تحقّق من مدد كل إطار المرمّزة بعد حفظ GIF، والأبعاد، وloop=0، ومجموع الدورة؛ لا تستنتج التوقيت من شريط ثابت. لا تستخدم توليد صور أو فيديو مدفوعاً. هذا مثال توضيحي مولّد بالكود في Ciyo الفعلي، وليس معياراً لجودة نموذج.افحص الملف المصدّر بدلاً من عدّ الرسومات
تتضمن نتيجة Ciyo الفعلية الشريط وGIF الأصلي وGIF المكبّر. نزّلنا ملفي GIF الأصليين وأعدنا فتحهما بفحص مستقل. لكل منهما أربعة إطارات بمدد مرمّزة [600,100,200,100]، ومجموع 1,000 ms، وإعداد loop=0.
أبعاد الملف الأصلي 32×32 ونسخة الفحص 256×256. هذه قياسات لهذين الملفين فقط. لا تثبت دقة تشغيل المتصفح أو توقيت محرك الألعاب أو جودة الحركة في كل وجهة.

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

راجع دورة بحجم العرض المقصود
شاهد الحركة حيث ستستخدمها. تأكد من بقاء فترة الفتح الطويلة والانتقالات القصيرة واضحة. استخدم النسخة المكبّرة لفحص الثبات واتساق البكسلات، ثم عد إلى الحجم الأصلي للحكم على الإيقاع.
في حركات اللعب يحدد التوقيت أيضاً لحظات الأصوات والمؤثرات وتغيّر الاصطدام. لا يتضمن مثال الوميض هذا منطق هجوم أو ضرر. ضع تلك الأحداث في خط زمني واضح ومستقل واختبره في المحرك.
أسئلة عملية
هل يمكن استنتاج المدة من شريط PNG؟
لا. يعرض الشريط الرسم والترتيب. اقرأ بيان التوقيت أو افحص الحركة المرمّزة.
هل يعني loop=0 أن الحركة متوقفة؟
في ملفات GIF المستخدمة هنا، يطلب loop=0 التكرار إلى أجل غير محدد.
هل تضمن دورة مرمّزة من ثانية واحدة تشغيلها بدقة في كل مكان؟
لا. اختبر التشغيل في المتصفح أو التطبيق أو المحرك الذي سيعرض الحركة.
احتفظ بالتوقيت مع إطارات الشخصية
ابدأ بمثال واحد تم التحقق منه في Ciyo. احتفظ بالأصل وافحص الملف المصدّر قبل استخدامه في مشروعك.