我认为您不能安全地将 BitmapData 的实例存储在共享对象中(在 PersistanceManager 内部使用)。文档中没有明确提及:http: //help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/net/SharedObject.html
但是,您可以将 BitmapData 的数据保存为 ByteArray 并在检索时返回转换。
// write
var byteArray:ByteArray = bitmap.bitmapData.getPixels(bitmap.bitmapData.rect);
so.data.byteArray = byteArray;
so.data.width = bitmap.bitmapData.rect.width;
so.data.height = bitmap.bitmapData.rect.height;
so.flush();
// read
var byteArray:ByteArray = so.data.byteArray;
var bitmapData:BitmapData = new BitmapData(so.data.width, so.data.height);
bitmapData.setPixels(bitmapData.rect, byteArray);
请注意,您还需要存储图像的宽度和高度。您可以将其包装在一个对象中,以便在持久性管理器中有 1 个条目而不是 3 个条目。如果您想存储多个位图,这可能会更方便。
// write
var bd:BitmapData = signArea.getBitmapData();
var r:Rectangle = bd.rect;
pm.setProperty("sign", {bytes:bd.getPixels(r), width:r.width, height:r.height});
// read
var signData:Object = pm.getProperty("sign");
var bitmapData:BitmapData = new BitmapData(signData.width, signData.height);
bitmapData.setPixels(bitmapData.rect, signData.bytes);