1

我需要将我嵌入项目的“assets”文件夹中的一些图像复制到 File.applicationStorageDirectory 位置,但我不知道该怎么做(实际上我不知道如何使用 File 访问嵌入的文件对象实例)...

有什么建议么 ?

4

1 回答 1

0

正如我在评论中建议的那样,显然嵌入式资产默认情况下不会序列化为 ByteArray。例如,图像被序列化为 BitmapAsset 类。

[Embed(source="sourceImg.png")]
private var MyImage:Class;

对于此嵌入,您可以执行以下操作:

var bmp:BitmapAsset = new MyImage();

有一些技术可以将该 BitmapAsset 转换为 ByteArray,但还有一种更简单的方法:如果在 embed 指令中将类型设置为“octetstream”,它会立即序列化为 ByteArrayAsset 类,它是 ByteArray 的子类。所以你可以这样做:

[Embed(source="sourceImg.png", mimeType="application/octet-stream")]
private var MyImage:Class;

var bytes:ByteArray = new MyImage();

现在您需要做的就是使用 FileStream 将该 ByteArray 写入磁盘:

var file:File = File.desktopDirectory.resolvePath('targetImage.png');
var fs:FileStream = new FileStream();
fs.open(file, FileMode.WRITE);
fs.writeBytes(bytes);
fs.close();

这就是它的全部。

于 2012-04-18T15:39:35.387 回答