Ver Mensaje Individual
  #7 (permalink)  
Antiguo 26/02/2010, 12:21
djburner
 
Fecha de Ingreso: febrero-2010
Mensajes: 7
Antigüedad: 14 años, 9 meses
Puntos: 0
Respuesta: Cree un monstruo chupa memoria, que puedo hacer?

Hola amigos, sigo con el mismo problema y no puedo llegarle a una solución.
Cambié la forma de buscar una solución y apesar de que utilizo todas las herramientas que he podido encontrar NADA parece que puede eliminarme el swf cargado de la memoria.

Utilizo: el metodo unloadAndStop(Cambie a CS4 a ver si acaso)
Utilizo: weak references
Utilizo en el SWF que será cargado un REMOVE_FROM_STAGE que dispara una funcion Destroy que elimina listeners y objetos.

Apesar que uso todo esto, el bendito SWF sigue clavado ahi en la memoria.

Este es el código que tengo en el SWF que será cargado:

Código:
addEventListener(Event.ADDED_TO_STAGE, addedHandler);
addEventListener(Event.REMOVED_FROM_STAGE, removedHandler);

var logo_mc:MovieClip = new LogoMc();

function addedHandler(evt:Event):void
{
	removeEventListener(Event.ADDED_TO_STAGE, addedHandler);
	initAnimation();
}

function removedHandler(evt:Event):void
{
	removeEventListener(Event.REMOVED_FROM_STAGE, removedHandler);
	//Here comes the destroy function
	destroy();
}

function initAnimation():void
{

	addChild(logo_mc);
	logo_mc.x = 100;
	logo_mc.y = 200;
	logo_mc.addEventListener(Event.ENTER_FRAME, logoMove);
	
}
	
function logoMove(evt:Event):void
	{
		logo_mc.x += 10;
	}
	
function destroy():void
{
	logo_mc.removeEventListener(Event.ENTER_FRAME, logoMove);
	logo_mc = null;
}
Este es el código que puse en el Movie principal

Código:
var contentLoader:Loader = new Loader();
addChild(contentLoader);

loadButton_btn.addEventListener(MouseEvent.CLICK, loadMySwf, false, 0, true);
unloadButton_btn.addEventListener(MouseEvent.CLICK, unLoadMySwf,false, 0, true);


function loadMySwf(evt:MouseEvent):void
{
	loadURL("mySwfTest.swf");
}

function loadURL(url:String):void
{
	contentLoader.unloadAndStop();
	var request:URLRequest = new URLRequest(url);
	contentLoader.load(request);
}


function unLoadMySwf(evt:MouseEvent):void
{
	if(contentLoader.content)
	{
		contentLoader.unloadAndStop();
	}
}
Apesar de ser el SWF más simple del mundo y con todas estas formas de buscar desaparecerlo de la memoria NADA, el bicho sigue ahí.

Gracias por cualquier consejo o si encuentran una forma de hacerlo con exito les agradecería que me echaran un cable.