動畫精靈表

根據定義,精靈表是包含特定動畫的點陣圖。舊遊戲使用網格型別的精靈表,也就是說,每個框架佔據相同的區域,並且框架由邊緣對齊以形成矩形,可能有一些空間未被佔用。稍後,為了最小化點陣圖大小,精靈表開始通過刪除包含每個幀的矩形周圍的額外空白來打包,但仍然每個幀都是一個矩形以簡化複製操作。

為了使精靈表動畫化,可以使用兩種技術。首先,你可以使用 BitmapData.copyPixels() 將精靈表的某個區域複製到顯示的 Bitmap,從而生成動畫角色。如果你使用單個顯示的 Bitmap 來託管整個圖片,這種方法會更好。

var spriteSheet:BitmapData;
var frames:Vector.<Rectangle>; // regions of spriteSheet that represent frames
function displayFrameAt(frame:int,buffer:BitmapData,position:Point):void {
    buffer.copyPixels(spriteSheet,frames[frame],position,null,null,true);
}

如果你在顯示列表上有很多 Sprites 或 Bitmaps,它們可以使用第二種技術,它們共享相同的精靈表。這裡,目標緩衝區不再是單個物件,但每個物件都有自己的緩衝區,因此正確的策略是操作點陣圖的 bitmapData 屬性。然而,在這之前,應該將精靈表切割成單獨的幀。

public class Stuff extends Bitmap {
    static var spriteSheet:Vector.<BitmapData>;
    function displayFrame(frame:int) {
        this.bitmapData=spriteSheet[frame]; 
    }
    // ...
}