Есть ли лучший способ загрузить большую анимацию? - PullRequest
1 голос
/ 12 июня 2009

Может быть, не очень большой, но сто кадров или что-то. Это единственный способ загрузить его, создав массив и загрузив каждое изображение отдельно?

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

Похоже, их должно быть лучше ... по крайней мере, я надеюсь.

Ответы [ 3 ]

1 голос
/ 12 июня 2009

Обычной техникой являются спрайт-листы, в которых одно большое изображение делится на сетку ячеек, где каждая ячейка содержит один кадр анимации. Часто все кадры анимации для любого игрового объекта размещаются на одном, иногда огромном, листе спрайтов.

1 голос
/ 13 июня 2009

Вместо загрузки в виде сетки, сложите все кадры в одну вертикальную полосу (то же изображение). Тогда вам нужно только знать, сколько строк в кадре, и вы можете установить указатель на смещение строки кадра. В итоге у вас все еще остаются непрерывные линии сканирования, которые можно отображать напрямую или тривиально разжевать в отдельные изображения.

1 голос
/ 12 июня 2009

может упростить загрузку с помощью служебной функции, которая создает имя файла для каждой итерации цикла:

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