PDA

Просмотр полной версии : удаление внешнего содержимого


nayanov
28.04.2012, 13:47
создал проект1, в нем анимация и одна кнопка для загрузки внешнего swf, на внешнем swf 6 кнопок запуска различных внешних swf.
Реализовывал запуск внешних файлов при помощи URLRequest.
Как сделать чтобы при следующем запуске swf, предыдущий выгружался из памяти.
Понятно, что removeChild();
Но каким образом не могу понять.

Wolsh
28.04.2012, 14:00
Как сделать чтобы при следующем запуске swf, предыдущий выгружался из памяти.
Понятно, что removeChild();?
Какое отношение removeChild() имеет к памяти? Это всего лишь удаление из списка отображения.
Loader#unload()

nayanov
28.04.2012, 14:13
к памяти никакого.

Добавлено через 39 минут
Функции 2-х кнопок запуска внешнего swf, как мне выгружать из памяти первый при запуске второго??? Подскажите пожалуйста!!

var uiLoader:Loader = new Loader ();
bt_buksa.addEventListener (MouseEvent.CLICK, buksa);
function buksa (myevent:MouseEvent):void {
var buksaURL:URLRequest = new URLRequest ("rezim/Info.swf");
uiLoader.load(buksaURL);
addChild(buksaLoader);
}
bt_val.addEventListener (MouseEvent.CLICK, val);
function val(myevent:MouseEvent):void {
var valURL:URLRequest = new URLRequest ("val/Info.swf");
uiLoader.load(valURL);
addChild(uiLoader);
}

ramshteks
28.04.2012, 14:59
сохраняете ссылку загруженного клипа. При загрузке второго делаете unload()

nayanov
28.04.2012, 15:06
сохраняете ссылку загруженного клипа. При загрузке второго делаете unload()

Спасибо!!!! Только я начинающий в этом деле и разбираюсь поэтапно, по мере появления проблем.
Как программно это написать?Скажите пожалуйста, если не трудно!

ramshteks
28.04.2012, 15:24
var uiLoader:Loader = new Loader ();
bt_buksa.addEventListener (MouseEvent.CLICK, buksa);
function buksa (myevent:MouseEvent):void {
var buksaURL:URLRequest = new URLRequest ("rezim/Info.swf");
uiLoader.load(buksaURL);
addChild(buksaLoader);
}
bt_val.addEventListener (MouseEvent.CLICK, val);
function val(myevent:MouseEvent):void {
//--inject
uiLoader.unload();
//--------
var valURL:URLRequest = new URLRequest ("val/Info.swf");
uiLoader.load(valURL);
addChild(uiLoader);
}


самый простой способ исправить ваш код, чтобы удовлетворять требованиям

nayanov
28.04.2012, 15:31
а у меня таких кнопок, 6 мне для каждой подобно прописывать????

ramshteks
28.04.2012, 15:38
а у меня таких кнопок, 6 мне для каждой подобно прописывать????

ну да. Ну или можете автоматизировать процесс, дело ваше.

nayanov
28.04.2012, 15:42
Изменил код, по вашему совету и ноль результата, все равно при переключении кнопок (загрузки внешних swf файлов) память забивается!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

ramshteks
28.04.2012, 15:52
Изменил код, по вашему совету и ноль результата, все равно при переключении кнопок (загрузки внешних swf файлов) память забивается!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

удаление из памяти совершенно не факт, что произойдет сразу.

nayanov
28.04.2012, 16:14
вообще не происходит удаление из памяти.

Добавлено через 38 минут
Народ кто подскажет по поводу освобождения памяти, помогите пожалуйста!!!!

nayanov
03.05.2012, 17:35
После праздников и проб и ошибок подведем ИТОГ:

bt_obuchenie.addEventListener (MouseEvent.CLICK, obuchenie);
function obuchenie (myevent:MouseEvent):void {
gotoAndStop(2);
inr = 3;
if ((inr == 1)||(inr == 2)||(inr == 4))
{
iltLoader.unload();
}
var iltURL:URLRequest = new URLRequest ("rezim/obuchenie.swf");
iltLoader.load(iltURL);
addChild(iltLoader);
}

Вот так в моем случае все работает как надо!!!!
Из памяти сразу же выгружается! И это самое главное!!!!!!!!

Jewelz
03.05.2012, 17:46
понятно почему не работало, было слишком мало восклицательных знаков

КорДум
03.05.2012, 18:13
inr = 3;
if ((inr == 1)||(inr == 2)||(inr == 4))
{
iltLoader.unload();
}
А это условие вообще никогда не выполнится.