Есть ли лучший способ загрузить большую анимацию?

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