0

我的理解是嵌入式图像被压缩并存储为应用程序二进制文件(SWF 文件)的一部分,并且在实例化具有嵌入式图像属性的类时,所有图像都会立即加载并保留在内存中,因此它们随时可用,不需要异步加载。这当然听起来很直观,但它绝对正确吗?

例如,如果我使用的类定义

class BunchOfEmbeddedImages {
[Embed(source="some_image_1.png")]
private var someImage1:Class;
.
.
.
[Embed(source="some_image_100.png")]
private var someImage100:Class;
}

假设每个图像为 100KB,当创建此类的实例时,应用程序现在是否为 10000KB(因为它们已解压缩,所以更多)?

4

1 回答 1

0

我想我不妨回答我自己的问题。虽然我找不到我阅读的原始文档以找到该主题的答案(它是来自 adobe 的性能优化文档),但我确实发现无论如何,由于整个 SWF 被加载到内存中,所有嵌入的资产也正在消耗内存,无论嵌入它们的类是否被实例化。这确实很有意义,因为嵌入的图像都将引用相同的位图数据,但会被不同的 DisplayObject 实例引用。这允许显示列表的不同部分中的 n 个 DisplayObject 显示相同的图像,但不会消耗 n 倍于位图的内存。

于 2012-12-16T02:35:49.993 回答