也许不是很大,但是一百帧或者其他东西。是通过制作数组并单独加载每个图像来加载它的唯一方法吗?
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" );
似乎他们应该是一个更好的方式..至少我希望。
答案 0 :(得分:1)
可以使用实用程序函数简化加载,该函数为循环的每次迭代构建文件名:
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);
}
}
答案 1 :(得分:1)
一种常见的技术是spritesheets,其中单个大图像被划分为单元格网格,每个单元格包含一帧动画。通常,任何游戏实体的所有动画帧都放在单个(有时是巨大的)精灵表上。
答案 2 :(得分:1)
不是作为网格加载,而是将所有帧堆叠在一个垂直条带中(相同的图像)。然后,您只需要知道每帧有多少行,并且可以设置指向帧行偏移的指针。你最终仍然有连续的扫描线,可以直接显示或平凡地咀嚼成单独的图像。