| Monade 2 |
08.04.2011 16:20 |
это само собой, removeChild используем. а с какой примерно периодичностью запускается GC?
и еще пример - если в MovieClip куча всякого понапихано, например кнопки, поля TLF, опять же Bitmap, их как-то по отдельности нужно обрабатывать?
Добавлено через 1 час 57 минут
интересное наблюдение. есть код:
Код AS3:
addEventListener(Event.ENTER_FRAME, function(){ trace(System.totalMemory); } );
var container = new MovieClip;
addChild(container );
var lHome:Loader = new Loader();
var urlrHome:URLRequest = new URLRequest("test2.swf");
function c_load (e:Event){
lHome.load(urlrHome);
lHome.contentLoaderInfo.addEventListener(Event.COMPLETE, movieLoaded);
}
function movieLoaded(event:Event):void {
container.addChild(lHome);
lHome.contentLoaderInfo.removeEventListener(Event.COMPLETE, movieLoaded);
}
function c_unload(e:Event){
lHome.unloadAndStop(false);
container.removeChild(lHome);
lHome = null;
container = null;
try {
new LocalConnection().connect('foo');
new LocalConnection().connect('foo');
} catch (e:*) {}
}
в тестовом ролике есть несколько больших картинок BitmapData. Код:
Код AS3:
try {
new LocalConnection().connect('foo');
new LocalConnection().connect('foo');
} catch (e:*) {}
принудительный вызов GC (вроде как). так вот, если в тестовом ролике находятся только BitmapData, память успешно освобождается после вызова функции c_unload. если же там есть хотя бы одна кнопка или хотя бы одно динамическое текстовое поле, этого не происходит (память не освобождается). кто-нибудь сталкивался с этим, и если да, то как можно решить проблему?
заранее спасибо!
Добавлено через 2 часа 0 минут
смена false на true в unloadAndStop ничего не меняет (хотя по умолчанию true)
|