هل هناك طريقة أفضل لتحميل الرسوم المتحركة الكبيرة؟

StackOverflow https://stackoverflow.com/questions/987828

سؤال

ربما ليست كبيرة حقا، ولكن مائة إطارات أو شيء من هذا. هي الطريقة الوحيدة لتحميلها من خلال صنع صفيف وتحميل كل صورة على حدة؟

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);
    }
}

بدلا من التحميل كشبكة، كومة جميع الإطارات في شريط عمودي واحد (نفس الصورة). فأنت بحاجة فقط لمعرفة عدد الصفوف لكل إطار ويمكنك تعيين مؤشر إلى إزاحة صف الإطار. في نهاية المطاف، لا تزال لها خطوط المسح المتجاورة التي يمكن عرضها بشكل مباشر أو مضغ تافهة في صور منفصلة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top