我只加载位图,甚至没有将它们添加到舞台上,每张图片都会占用我的直接内存。大图像会占用更多内存,所以我想知道如果在加载这些位图后如何保持直接内存不足,或者我在这里做错了什么或丢失了什么东西?
var myBitmapHolder:Bitmap;
var bitmapLoader:Loader = new Loader();
bitmapLoader.addEventListener(Event.COMPLETE, bitmapLoaded);
bitmapLoader.load(new URLRequest("myBitmap.png");
private function bitmapLoaded(e:Event):void {
myBitmapHolder = e.currentTarget.content;
}
加载位图后,我会使用myBitmapHolder存储它,以便根据请求访问它。我使用了超过30个位图,分别对每个图像的上述示例起作用。
答案 0 :(得分:0)
所以...没有免费资源 - 你必须在内存中加载所有资源,或者你必须加载然后卸载每个或几个位图。这将“吃掉”其他资源,如CPU和网络流量等
首先,您必须在'bitmapLoaded'函数中删除'bitmapLoader'Event.COMPLETE侦听器:bitmapLoader.removeEventListener(Event.COMPLETE, bitmapLoaded); }
您必须确保加载位图/ s一次。
看看这个:AS3 - Memory management和What are good memory management techniques in Flash/as3。你可以看一下:imageDecodingPolicy。