Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Подгрузка MovieClip'ов из swc-библиотеки (http://www.flasher.ru/forum/showthread.php?t=176099)

RhPlus 02.03.2012 00:48

Подгрузка MovieClip'ов из swc-библиотеки
 
Реально ли в основной флешке подгружать MovieClip'ы из SWC-библиотек? Например если в игре несколько уровней: загрузить первый как текущий, потом выгрузить, загрузить второй как текущий и т. д.
Буду крайне признателен за какие-нибудь примеры, хотелось бы узнать что вы думаете о подобной загрузке.
Спасибо.

ChuwY 02.03.2012 00:50

Грузить лучше swf, а потом извлекать классы с помощью getDefinition или путем использования интерфейса библиотеки-уровня. Тема многократно обсуждалась.

illuzor 02.03.2012 01:03

RhPlus, это не загрузка.
swc - это просто набор классов, упакованный в один файл.
Можно в swc хранить несколько уровней: Level01, Level02....

Код AS3:

var level1:Level01 = new Level01();
addChild(level1);
//.............
//когда становится не нужен первый, создаём второй
removeChild(level1) // также удаляем все слушатели и прочую ненужную ерунду
var level2:Level02 = new Level02();
addChild(level2);
// ... и т.д.


RhPlus 02.03.2012 01:19

illuzor, спасибо вам, но я все-таки не понимаю почему это НЕ загрузка... то есть даже из swc мне придется грузить в RAM все сразу, а потом я смогу только лишь удалять эти объекты со сцены?
P.S. Я по чему сужу-то: не так давно со звуком эксперементировал вот такой конструкцией:

Код AS3:

private function playIntro (e:MouseEvent):void //загрузить
        {
                if(s==null)
                {
                        s = new Sound();
                        s.load(new URLRequest("sound/music/sample.mp3"));
                        backgroundMusicChannel = s.play();
                }
        }
 
private function stopIntro (e:MouseEvent):void //выгрузить
        {
                backgroundMusicChannel.stop();
                s = null;
        }

Возможно это и отстой, но оно экономит память причем весьма неплохо. Так вот мне и хотелось бы узнать можно ли подобное сделать с MovieClip'ом?

illuzor 02.03.2012 01:24

Музыку вы именно подгружаете извне.
swc подключается прям к вашему проекту. (точнее не он, а классы из него, которые в проекте используются)

Вы создаёте экземпляр класса уровня, он помещается в память. Какое-то время этот экземпляр используете, когда не нужен, удаляете его из displayList и удаляете все его слушатели и ссылки на него. И тут его выкидывает из памяти garbage collector. Далее создаёте второй уровень и т.д.

Если же вам нужна именно подгрузка, то следуйте совету ChuwY

RhPlus 02.03.2012 01:37

illuzor, ChuwY, еще раз спасибо. Можно попросить какие-нибудь примеры использования getDefinition() именно с целью извлечения классов из загруженной SWF и передачи их в основную (если такое вообще возможно)?

Wolsh 02.03.2012 02:02

http://flasher.ru/forum/showthread.php?t=175237


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

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