Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   И снова освобождение памяти... (http://www.flasher.ru/forum/showthread.php?t=119043)

Nata_cher 10.12.2008 20:24

И снова освобождение памяти...
 
перерыла поиск, ничего внятного для себя не нашла, поэтому не бейте сильно...:) Спасибо.
Вот в чем вопрос.
Код:

loadMovieClip = function(_mc){
        movie_mc.removeMovieClip();
        var movie_mc = this.createEmptyMovieClip("movie", 2);
        movie_mc._y = 200;
        movie_mc.loadMovie(_mc);
        }
sc1_btn.onRelease = function(){
        loadMovieClip("movie1.swf");
        }
sc2_btn.onRelease = function(){
        loadMovieClip("movie2.swf")
        }

Когда нажимаешь на кнопочку загружается соотвественный наружный swf и проигрывается, когда нажимаешь на другой память увеличивается, если еще нажмешь, еще увеличивается... и т.д.
Конечно в наружных swf есть свои EnterFrame , даже видео, но мне казалось, что при удалении объекта с помощью removeMovieClip(); память должна освобождаться.
Поясните почему так происходит, и что сделать чтобы память освободить?
Заранее спасибо

DarkLight 10.12.2008 20:46

movie_mc - локальная переменная, и сразу после вызова функции она становится undefined. Пишите:
Код AS1/AS2:

this.movie.removeMovieClip();

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

P. S. То что при создании каждый раз прописывается одна и та же глубина - ни на что не влияет, это в as3 при попытке создания клипа на той же глубине Вас обругает плеер.

Nata_cher 10.12.2008 20:58

не помогло, ситуация та же.... память растет

DarkLight 10.12.2008 21:26

unloadMovie попробуйте еще сделать перед удалением

Nata_cher 11.12.2008 01:17

не помогает, все остается также... память увеличивается при каждой новой подзагрузке внешнего объекта...

Mnilionic 11.12.2008 05:35

Nata_cher, у меня ваш код не вызывает увеличение расходя памяти. Даже если удалить строку
Код AS1/AS2:

movie_mc.removeMovieClip();

не вижу проблемы.

А вот если сделать вот так:
Код:

var i = 1;
loadMovieClip = function(_mc){
        movie_mc.removeMovieClip();
        var movie_mc = this.createEmptyMovieClip("movie" + i, i++);
        movie_mc._y = 200;
        movie_mc.loadMovie(_mc);
        }

То прирост на лицо: +60Мб после каждой кнопки (грузим 300кб жипеги)

Nata_cher 11.12.2008 11:10

Скажите, при удалении MC, удаляются все события внешнего подргужаемого файла, потому что там есть EnterFrame, есть процессы управления видео, не могут они оставаться?

Mnilionic 11.12.2008 16:57

если на них есть ссылки из основного мувика то могут и остаться :)


Часовой пояс GMT +4, время: 03:05.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.