我有这个代码只需加载图像并在flash as3中显示。
function mem(evt:*=null){
trace(Number( System.totalMemory / 1024 / 1024 ).toFixed( 3 ) + 'Mb')
}
mem();
var loader:URLLoader = new URLLoader();
loader.addEventListener(Event.COMPLETE, onloaded)
loader.load(new URLRequest("../capture.jpg"))
addChild(loader);
function onloaded(e:Event):void {
mem();
}
capture.jpg有234KB。
问题是加载System.totalMmemory后增加他的大小超过1Mb
跟踪:加载前后
17.391Mb
18.746Mb
似乎是flash加载,解压缩并将图像存储为原始数据。
有没有办法在加载后将图像保持原始大小? 谢谢!
答案 0 :(得分:4)
不,没有办法让图像保持原始尺寸。 Flash或任何其他图形环境必须将图像解码为原始数据以显示它。
解决问题的唯一方法是在不再需要图像后释放内存,只加载需要显示的图像。
答案 1 :(得分:0)
我对此可能是对或错,但这是我理解的方式: jpg是一种压缩格式,当加载完成后,Flash或任何网页都必须解压缩内存中的jpg。 另一方面,gif没有压缩,因此有时可能是较大的初始尺寸,但不会发生减压。尝试将资源加载为gif(可能不是连续色调图像的理想选择)并查看跟踪输出是否保持不变。