【发布时间】:2015-09-26 08:15:01
【问题描述】:
我只是加载位图,甚至没有将它们添加到舞台上,每个图像都会占用我的直接内存。大图像会占用更多内存,所以我想知道即使在加载这些位图之后如何保持直接内存低,或者我在这里做错了什么或遗漏了什么?
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 多个位图,分别对每个图像的工作方式与上面的示例相同。
【问题讨论】:
-
您认为这些位图加载到什么位置?它们被加载到内存中。
-
他们还能去哪里?如果您想保持较低的内存使用率,则应仅在需要时加载图像。
-
如果像我这样的小应用只加载几个位图后就占用了大量内存,那么一个大应用程序如何处理,比方说超过300个位图?我发布了我的问题,因为我不确定我处理加载位图的方式是最好的方式。
-
就像我说的,仅在必要时加载图像是一种可能的方法。您是否需要在应用程序的整个运行时使用这 300 个位图?
-
如果您使用多个具有相同内容的位图,您应该保留指向
BitmapData对象的链接并创建新的Bitmap对象,同时在构造函数中提供指向该位图数据的链接。关于许多位图,是的,应用程序确实会占用位图上的内存,而且相当多。
标签: performance actionscript-3 flash memory flashdevelop