ByteArrayAsset 是 flash.utils.ByteArray 类的子类,表示您在 Flex 应用程序中嵌入的任意字节数据序列。
可以嵌入任何类型的文件中的字节数据,并且将始终嵌入整个文件。虽然可以嵌入整个 SWF 文件,但无法嵌入 SWF 文件中特定资源的字节。
MXML 编译器自动生成扩展 ByteArrayAsset 的类,以表示嵌入的数据。
要随意嵌入一个文件,应声明一个类型为 Class 的变量,并使用 MIME 类型 application/octet-stream
为其指定 [Embed]
元数据。例如,您可以通过以下方式嵌入文本文件:
编译器自动生成 ByteArrayAsset 类的子类,并将您的变量设置为对此自动生成的类的引用。然后,您可以使用此类引用使用 new
运算符创建 ByteArrayAsset 实例,并且您还可以使用 ByteArray 类的方法从字节数组中提取信息:
var storyByteArray:ByteArrayAsset = ByteArrayAsset(new storyClass()); var story:String = storyByteArray.readUTFBytes(storyByteArray.length);
您必须指定嵌入的 MIME 类型为 application/octet-stream
,以便按“原有”格式嵌入字节数据,而无需进行解析。它还使自动生成的类扩展 ByteArrayAsset,而不是扩展其它资源类。
例如,如果您嵌入 PNG 文件时没有指定此 MIME 类型,则 PNG 数据将自动转码为播放器使用的位图格式,并自动生成 BitmapAsset 子类来代表它。但是,如果您将 MIME 类型指定为 application/octet-stream
,则将不会转码,并且将按原有格式嵌入 PNG 数据,自动生成的类将扩展 ByteArrayAsset。