2009-06-12 71 views
1

也许不是真的很大,而是一百帧的东西。是通过制作数组并逐个加载每个图像来加载它的唯一方法?有没有更好的方法来加载大动画?

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

回答

1

的一种常用技术是spritesheets,其中一个单一的,大的图像被划分成单元的网格:

+0

从长远来看,这可能是最好的方式,如果帧的数量相当大(比如超过15) – Skurmedel 2009-06-12 17:23:39

1

也许与构建用于循环的每次迭代中的文件名的效用函数简化装载每个单元包含一个动画帧。通常,任何游戏实体的所有动画帧都放置在单个有时巨大的精灵表单上。

+0

感谢您的代码,我可能会使用这个为我做的第一个程序。 – Justen 2009-06-12 19:56:49

1

而不是加载为一个网格,堆叠所有帧在一个垂直条(相同的图像)。然后你只需要知道每帧有多少行,你可以设置一个指向帧行偏移量的指针。您最终仍然拥有连续的扫描线,可以直接显示或简单地将其剔除为单独的图像。

相关问题