Hi.
I have a big problem in my application, and didn’t succeeded to solve it.
I have to load 2500 images and store them in theirs containers MC-s, images are about 20 to 40 Kb big, so it would be around 100 Mb, but the memory flash player use for one image loaded is about 10 Mb.
After 400 images player freeze, because memory builds over 1 GB.
How to solve this memory leek.
//
package hr.novena
{
//
import flash.display.*;
import flash.events.*;
import flash.net.*;
import flash.system.System;
//
public class MainLoad extends Sprite
{
//
private var images_mc:MovieClip;
//
private var loader:Loader;
private var urlRequest:URLRequest;
//
private var totalImages_num:Number;
private var imagesLoaded_num:Number;
//
//
public function MainLoad ()
{
images_mc = this.images;
//
imagesLoaded_num = 0;
totalImages_num = 50;
//
urlRequest = new URLRequest();
//
loadImage ();
}
//
//
private function loadImage ()
{
//
//var imageCont:Sprite = new Sprite();
//
//images_mc.addChild (imageCont);
//
//imageCont.name = "image" + imagesLoaded_num;
//
loader = new Loader();
loader.contentLoaderInfo.addEventListener (Event.INIT, loadInit, false, 0, true);
loader.contentLoaderInfo.addEventListener (Event.COMPLETE, loadComplete, false, 1, true );
//
urlRequest.url = "imagesTest/"+imagesLoaded_num+".jpg";
//
//images_mc.addChild(loader)
//
//loader.unload ();
loader.load (urlRequest);
//
}
//
//
private function loadInit (event:Event)
{
//
//var bitmap:Bitmap = Bitmap(loader.content);
//var imageCont:Sprite;
//
//imageCont = Sprite(images_mc.getChildByName("image" + imagesLoaded_num));
//
//trace ("loadInit imagesLoaded_num= "+imagesLoaded_num);
//
//imageCont.addChild (bitmap);
//
}
//
//
private function loadComplete (event:Event)
{
trace ("loadComplete imagesLoaded_num= "+imagesLoaded_num+ " : "+ Math.round(Math.round(System.totalMemory/1024)/1024));
//
imagesLoaded_num++;
//
if (imagesLoaded_num < totalImages_num)
{
//
loader.contentLoaderInfo.removeEventListener (Event.COMPLETE, loadComplete);
loader.contentLoaderInfo.removeEventListener (Event.INIT, loadInit);
//Bitmap(loader.content).bitmapData.dispose()
loader = null;
//
//trace(loader.contentLoaderInfo.contentType)
loadImage ();
}
}
}
}