Hi,
During creating of TimelineMax-based-swf-animation player, i run into gc problem with loaded swfs. I tried to isolate problem as much as possible.. If you run it, memory is not released. I am using LoaderMax 1.5 2010-09-22.. hope I am not doing something bad..
just weight
package
{
import flash.display.Sprite;
[sWF(backgroundColor="0x000000",frameRate="50",width="512",height="512")]
public class BigSWF extends Sprite
{
[Embed(source="BIG_IMAGE.jpg")] public var IMAGE:Class;
public function BigSWF() {
this.graphics.beginFill(0xFF7000,1);
this.graphics.drawRect(0,0,512,512);
this.graphics.endFill();
}
}
}
tester
package
{
import flash.display.Sprite;
import flash.text.TextField;
import flash.events.TimerEvent;
import flash.utils.Timer;
import flash.system.System;
import com.greensock.events.LoaderEvent;
import com.greensock.loading.SWFLoader;
[sWF(backgroundColor="0xFFFFFF",frameRate="50",width="880",height="500")]
public class GCTest extends Sprite
{
private const URL:String = "BigSWF.swf";
private var c:int = 0;
private var loader:SWFLoader;
private var t:Timer;
private var out:TextField;
public function GCTest() {
out = new TextField();
out.multiline = true;
out.width = stage.stageWidth;
out.height = stage.stageHeight;
addChild(out);
t = new Timer(3000);
t.addEventListener(TimerEvent.TIMER,go);
t.start();
}
private function complete(e:LoaderEvent):void {
out.appendText(" - complete");
//
loader.dispose(true);
loader = null;
out.appendText(" - dispose");
//
System.gc();
out.appendText(" - gc");
out.appendText(" - mem: "+Number((System.totalMemory*0.000000954).toPrecision(4)));
out.appendText("\n");
//
t.start();
}
private function go(e:TimerEvent):void {
out.appendText("#"+c+"\t");
//
t.stop();
loader = new SWFLoader(URL,{name:"l"+(c++),container:this,onComplete:complete,noCache:true});
loader.load();
}
}
}