3. RSL Part1. Динамическая загрузка библиотек

junior – серия статей для начинающих ActionScript-разработчиков.
Все статьи серии:
http://flashpress.ru/blog/category/junior/

Что такое RSL?

RSL – это динамически загружаемая библиотека(runtime shared library). Если по простому, то это флешка (.swf файл), с набором классов/ресурсов, которая загружается в ваше приложения в реалтайме, в процессе выполнения приложения.

Где может пригодится использование RSL?

Представьте себе ситуацию: вы разрабатываете игру, в игре есть модуль Магазин. Этот магазин использует SWC библиотеку с большим количеством классов и весит эта библиотека очень много. Если персонаж в вашей игре заходит на страницу Магазина очень редко, есть ли смысл загружать каждый раз тяжелую библиотеку? Более разумно загружать библиотеку в тот момент когда пользователь решил открыть магазин(ну или в фоновом режиме, когда основная часть игры загружена).

Другой пример: у вас есть одна мега крутая SWC библиотека, и несколько приложений которые используют эту библиотеку. Вдруг вас осенило, и вы решили слегка подправить SWC библиотеку. Не вопрос, исправили. А как быть с теми прижениями которые уже работают и используют эту библиотеку? Перекомпиливать все приложения? Не очень веселое занятие. На помощь приходят RSL: вы изменили исходный код библиотеки, скомпилировали новую RSL-ку и выложили на сервер. Все приложения тут же получат обновленный код.

Создание RSL

Как я уже писал выше, RSL – это обычная флешка с набором классов/ресурсов. Что бы создать RSL необходимо создать SWC библиотеку и вытащить из неё флешку с классами. Как создавать SWC я рассказывал в отдельной статье. В этой же статье я рассказывал как вытащить флешку из SWC: переименовать swc файл в .zip и разархивировать обычным архиватором.

Использование RSL.

Для того что бы использовать все плюсы динамической загрузки библиотек, необходимо сделать следующее:

  1. Подключить SWC библиотеку, но так что бы классы из этой библиотеки не вкомпиливались в ваше приложение. Как это сделать покажу ниже
  2. Перед тем как ваше приложение начнет использовать классы из RSL библиотеки, эту самую библиотеку необходимо загрузить в текущем домене

Подключение SWC/RSL
Подключив SWC как показано здесь, кликните на маленький треугольник(3) слева от имени swc-библиотеки, что бы развернуть выпадающий список. В открывшемся списке кликните два раза на пункт Link Type: Merged into code(4). В окне Library Path Item Options кликаем на выпадающий список Link Type(5) и выбираем пункт External(5):rsl-part1-1

Загрузка RSL
Перед тем как приложение начнет использовать классы из вашей RSL библиотеки, эту библиотеку нужно загрузить следующим образом:

Обратите внимание что в методе load необходимо передать объекта класса LoaderContext, в котором мы передаем ApplicationDomain.currentDomain. Это означает что все загружаемые классы будут загружены в текущий домен. Подробнее о доменах можно читать в статье.

Если вы попытаетесь использовать классы из RSL библиотеки до того как они будут загружены, вы получите ошибку вида:

Связанные статьи:

Да прeбудет с вами Flash.
Serious Sam
Эту статью прочитали 1885 раз

Возникли вопросы по статье? Не стесняйтесь спрашивать в комментариях или любым другим способом на странице Контакты .

Присоединяйтесь к нам в социальных сетях: ВКонтакте , Twitter и Facebook
Понравилась статья? Буду благодарен если вы поделитесь ссылкой с друзьями:


Комментарии ВКонтакте:




Комментарии Facebook:




Комментарии WordPress: