如何在运行时处理动作脚本中的嵌入图像

时间:2012-08-11 18:02:56

标签: image memory actionscript

我的理解是嵌入式图像被压缩并存储为应用程序二进制文件(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(更多因为它们已经解压缩了)?

1 个答案:

答案 0 :(得分:0)

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