動畫精靈表
根據定義,精靈表是包含特定動畫的點陣圖。舊遊戲使用網格型別的精靈表,也就是說,每個框架佔據相同的區域,並且框架由邊緣對齊以形成矩形,可能有一些空間未被佔用。稍後,為了最小化點陣圖大小,精靈表開始通過刪除包含每個幀的矩形周圍的額外空白來打包,但仍然每個幀都是一個矩形以簡化複製操作。
為了使精靈表動畫化,可以使用兩種技術。首先,你可以使用 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);
}
如果你在顯示列表上有很多 Sprite
s 或 Bitmap
s,它們可以使用第二種技術,它們共享相同的精靈表。這裡,目標緩衝區不再是單個物件,但每個物件都有自己的緩衝區,因此正確的策略是操作點陣圖的 bitmapData
屬性。然而,在這之前,應該將精靈表切割成單獨的幀。
public class Stuff extends Bitmap {
static var spriteSheet:Vector.<BitmapData>;
function displayFrame(frame:int) {
this.bitmapData=spriteSheet[frame];
}
// ...
}