2009-06-12 70 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

而不是加載爲一個網格,堆疊所有幀在一個垂直條(相同的圖像)。然後你只需要知道每幀有多少行,你可以設置一個指向幀行偏移量的指針。您最終仍然擁有連續的掃描線,可以直接顯示或簡單地將其剔除爲單獨的圖像。

相關問題