eralha
Power Member
Boas pessoal, estou com um problema no garbage collecting de uma aplicação que fiz, basicamente o que esta aplicação faz é carregar imagens em slid show, o que sucede e que o uso de memória nao para de subir levando mesmo ao esgotamento de recursos, posto em baixo o exemplo do codigo que tenho resumido, apenas tenho o loader e mesmo fazendo o unload do recurso, a memória nao fica livre.
Código:
package ui{
import flash.display.*;
import flash.events.*;
import flash.net.URLRequest;
import flash.text.TextField;
import ui.XmlPhraser;
import ui.squareTransition;
import caurina.transitions.Tweener;
import flash.utils.Timer;
import flash.events.TimerEvent;
public class homePageEngine extends MovieClip{
private var images:Array = new Array();
private var imageIndex:Number = 0;
private var imageLoader:Loader;
private var xmlDataReader:XmlPhraser = new XmlPhraser();
private var imageReference:MovieClip;
private var transition:squareTransition;
private var stagesArray:Array = new Array();
private var Timmer:Timer = new Timer(6000);
private var temporaryData:*;
private var image:Bitmap;
private var container:MovieClip;
private var imageContainer:MovieClip;
public static var DATA_LOAD_COMPLETE:String = "dataLoad";
public function homePageEngine():void{
Timmer.addEventListener("timer", timerHandler);
xmlDataReader.addEventListener(DATA_LOAD_COMPLETE, startAPI);
xmlDataReader.xmlFile = "galeria.xml";
xmlDataReader.loadData();
}
private function startAPI(e:Event=null):void{
if(images.length == 0){images = xmlDataReader.imageList;}
if(imageLoader!=null){
try {
imageLoader.contentLoaderInfo.removeEventListener(Event.COMPLETE, imageLoadComplete);
imageLoader.contentLoaderInfo.removeEventListener(IOErrorEvent.IO_ERROR, imageIoErrorHandler);
imageLoader.close()
imageLoader = null
} catch (e:Error) {
trace(e);
}
}
imageLoader = new Loader();
imageLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, imageLoadComplete);
imageLoader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, imageIoErrorHandler);
imageLoader.load(new URLRequest(images[imageIndex]));
}
private function imageLoadComplete(e:Event):void{
imageIndex ++;
if(imageIndex >= images.length){imageIndex = 0;}
if(image != null){
image = null;
container = null;
imageContainer = null;
}
st.text = String(imageIndex);
imageLoader.unload();
Timmer.start();
}
private function imageIoErrorHandler(e:Event):void{
}
public function timerHandler(event:TimerEvent):void {
//trace("timerHandler: " + event);
Timmer.stop();
try{
startAPI();
}catch(e:Error){
trace(e.toString());
}
}
}
}