هل هناك طريقة أفضل لتحميل الرسوم المتحركة الكبيرة؟
-
13-09-2019 - |
سؤال
ربما ليست كبيرة حقا، ولكن مائة إطارات أو شيء من هذا. هي الطريقة الوحيدة لتحميلها من خلال صنع صفيف وتحميل كل صورة على حدة؟
Load_Image () هي وظيفة قمت بها والتي تقوم بتحميل الصور وتحويل BPP الخاصة بهم.
expl[0] = load_image( "explode1.gif" );
expl[1] = load_image( "explode2.gif" );
expl[2] = load_image( "explode3.gif" );
expl[3] = load_image( "explode4.gif" );
...
expl[99] = load_image( "explode100.gif" );
يبدو أنهم يجب أن يكونوا أفضل طريقة .. على الأقل آمل.
المحلول
تقنية شائعة هي تليبع، حيث يتم تقسيم صورة واحدة كبيرة إلى شبكة من الخلايا، مع كل خلية تحتوي على إطار واحد من الرسوم المتحركة. في كثير من الأحيان، يتم وضع جميع إطارات الرسوم المتحركة لأي كيان ألعاب على ورقة فرطية واحدة ضخمة في بعض الأحيان.
نصائح أخرى
ربما تبسيط التحميل الخاص بك مع وظيفة الأداة المساعدة تقوم ببناء اسم ملف لكل تكرار لحلقة:
LoadAnimation(char* isFileBase, int numFrames)
{
char szFileName[255];
for(int i = 0; i < numFrames; i++)
{
// append the frame number and .gif to the file base to get the filename
sprintf(szFileName, "%s%d.gif", isFileBase, i);
expl[i] = load_image(szFileName);
}
}
بدلا من التحميل كشبكة، كومة جميع الإطارات في شريط عمودي واحد (نفس الصورة). فأنت بحاجة فقط لمعرفة عدد الصفوف لكل إطار ويمكنك تعيين مؤشر إلى إزاحة صف الإطار. في نهاية المطاف، لا تزال لها خطوط المسح المتجاورة التي يمكن عرضها بشكل مباشر أو مضغ تافهة في صور منفصلة.