Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Загрузка - выгрузка - загрузка (http://www.flasher.ru/forum/showthread.php?t=160086)

Валиант 08.07.2011 16:55

Загрузка - выгрузка - загрузка
 
я гружу флешку - эта флешка перелистывание страниц, page-flip то есть. Все нормально работает, все перелистывается
Код AS3:

var dBook500:Loader = new Loader;
 
        dBook500.name = 'book';
        dBook500.load(new URLRequest("book500.swf"));
        dBook500.x = 28;
        dBook500.y = 0;
        dBook500.contentLoaderInfo.addEventListener(Event.COMPLETE, onloadBook500);
 
function onloadBook500(e:Event):void{
        addChild(dBook500);
}

потом после определенного действия, я нажимаю на кнопку, что бы закрыть флешку, то есть выгрузить
Код AS3:

        var getBook = getChildByName('book');
        if (getBook){
                getBook.unload();
                removeChild(getBook);
        }

потом снова ее загружаю, но новая загруженная флека не позволяет перелистывать страницы... словно drag'n'drop перестал работать...

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

in4core 08.07.2011 17:19

Код AS3:

var mc:MovieClip;
var dBook500:Loader = new Loader();
 
        dBook500.name = 'book';
        dBook500.load(new URLRequest("book500.swf"));
        dBook500.contentLoaderInfo.addEventListener(Event.COMPLETE, onloadBook500);
 
function onloadBook500(e:Event):void{
        mc =        e.currentTarget.content
        addChild(mc);
        mc.x = 28;
        mc.y = 0;
}
 
 
        if (mc){
                dBook500.unloadAndStop(true);
                dBook500 = null;
                removeChild(mc);
                mc = null
        }


КорДум 08.07.2011 17:22

Еще нужно вызывать перед полным удалением-выгрузкой метод destroy() у флешки, который почистит все слушатели объекты и прочее. Метод нужно написать, конечно же.

in4core 08.07.2011 17:26

Неплохо бы ) Но думаю он берет готовую флешку и не вкурсе что там есть

КорДум 08.07.2011 17:28

Тогда оно печально. Каждое создание нового экземпляра флешки чревато большими утечками.

Валиант 08.07.2011 17:39

пишет ошибку
Цитата:

Ошибка типа Coercion: невозможно преобразовать flash.display::AVM1Movie@2e671bf1 в flash.display.MovieClip.
тут

Код AS3:

var mc:MovieClip;
var dBook500:Loader = new Loader();
 
        dBook500.name = 'book';
        dBook500.load(new URLRequest("book500.swf"));
        dBook500.contentLoaderInfo.addEventListener(Event.COMPLETE, onloadBook500);
 
function onloadBook500(e:Event):void{
        mc = e.currentTarget.content
        addChild(mc);
        mc.x = 28;
                mc.y = 0;
}


КорДум 08.07.2011 17:50

Цитата:

flash.display::AVM1Movie@2e671bf1
Поищите по форуму, как правильно загружать AVM1 в AVM2.

hartman 09.07.2011 12:51

Цитата:

Сообщение от КорДум (Сообщение 1010096)
Еще нужно вызывать перед полным удалением-выгрузкой метод destroy() у флешки, который почистит все слушатели объекты и прочее. Метод нужно написать, конечно же.

если на объект не осталось никаких ссылок разве его не потрет сборщик мусора вместе со слушателями? а пока этого не произойдет какой смысл удалять слушатели, все равно основная масса остается висеть в памяти.

КорДум 09.07.2011 13:45

Сам объект удалится. А его составляющие - нет.

hartman 09.07.2011 23:28

Цитата:

Сообщение от КорДум (Сообщение 1010292)
Сам объект удалится. А его составляющие - нет.

удаляется ссылка на объект. потом сборщик удаляет объект. у объекта были ссылки на его свойства. вместе с объектом удаляются ссылки, значит потом должны быть вычищены и свойства. или я чего то не понимаю?
в случае с лоадером есть метод unload, в документации написано, что надо потом еще закрыть все потоки (NetStream, Sound и т.п.), и вроде как все чисто.


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

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