Как настроить RSL (общая библиотека времени выполнения)

Стек!

У меня возникли небольшие проблемы с настройкой нового проекта (электронного обучения), который, я думаю, сильно выиграет от RSL.
Мой случай выглядит примерно так:

Main.fla - оболочка
Scenes.fla - я объясню это через минуту
Navigation.fla - Некоторые своего рода графический интерфейс
Множество файлов Fla - Уроки

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

Каждый урок будет помещен в файл fla / swf отдельно от «Архитектура» (то есть Main, Scenes, Navigation и целого набора классов под названием Engine) и будет быть добавленным во время выполнения внутри сцен.

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

Навигация отвечает за обработку пользовательского ввода в качестве навигации (следующий / предыдущий урок и т. Д.), А затем передает его движку, который будет управлять сценами (и его дочерними элементами).

Что ж, у меня тоже есть некоторые ограничения:
Каждый SWF-файл, который будет передан нашему клиенту, должен иметь размер менее 80 КБ, что означает, что я привязан.
Я не могу скомпилировать все это как готовый пакет для доставки.

Что касается размера, мне нужны средства, чтобы максимально облегчить нагрузку.
Итак, в эти дни я много искал и нашел RSL.
Я создал несколько тестов, чтобы лучше знать, как его использовать, и, конечно, попал в ловушку.

Мне не удалось правильно настроить Flash, не удалось добиться успеха с «Путь к библиотеке» (в конфигурации AS3), не удалось скомпилировать классы внутри SWC ...

Другое дело, что я не буду преподавать уроки, только архитектуру.
Эти уроки будут созданы людьми, которые могут вообще не иметь никаких знаний в AS3 (ООП или программной логике).
И я не склонен доставлять весь движок (исходный код) кому-либо извне, который может с ним связываться, делая все приложение (приложения, по сути, мы создадим сотни электронных обучающих материалов).

Я действительно думаю, что мне нужна помощь в некоторых вещах (часы отсчитывают время):

Как эффективно использовать RSL
Как объединить классы внутри SWC
Как упаковать все, что необходимо для всей работы в SWC, а затем доставить только этот SWC

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

Благодарю за внимание ...
NemoStein


person NemoStein    schedule 08.02.2011    source источник
comment
Насколько я понимаю, SWC не являются библиотеками RuntimeSharedLibraries, потому что вам нужно компилировать SWC. Если вам нужен доступ во время выполнения, вам нужно будет использовать SWF.   -  person Daniel    schedule 10.02.2011


Ответы (1)


Это можно сделать двумя способами.

one экспортирует всю библиотеку. Перейдите в настройки публикации, выберите «Только Flash», а затем выберите Export SWC на вкладке «Flash».

http://img593.imageshack.us/img593/8296/swc.png

другой - щелкнуть правой кнопкой мыши элемент в вашей библиотеке и выбрать «Экспорт SWC». Если у вас возникли проблемы с элементами, имеющими ограничение по размеру, это может быть подходящим вариантом, но в противном случае я бы рекомендовал экспортировать всю библиотеку.

Важно, чтобы вы добавляли идентификаторы привязки к своим активам. Вы можете ввести это через столбец идентификаторов привязок в своей библиотеке или отредактировав свойства символа.

Эти идентификаторы должны быть уникальными, так как это имена классов, по которым вы их будете называть. Хорошая идея - создать общий префикс, чтобы они не мешали другим классам.

http://img827.imageshack.us/img827/7820/linkageid.png

Когда ваши ресурсы скомпилированы, вы можете либо добавить их в папку библиотеки времени выполнения вашего проекта, либо встроить их один за другим с помощью настроек или тега embed. Я использую FlashDevelop, который упрощает работу, я не знаю, что вы используете, но уверен, что такая возможность есть и легко доступна.


Использование библиотек.

Что я делал для загрузки ресурсов (swf во время выполнения) Почему run-tim swfs? Что ж, вы действительно не можете держать движок отдельно, если вы компилируете его для контента. Идея состоит в том, что сначала загружается движок, а затем загружается конфигурация, которая сообщает ему, как обращаться с библиотеками и где найти каждую из них.

моя установка / установка упрощенная выглядит примерно так

У меня есть XML-файл конфигурации по умолчанию, в который добавляются библиотеки. Для моих целей я знаю ожидаемые библиотеки, поэтому у меня есть теги xml с предопределенными идентификаторами, подобными этому:

со стороны кода я бы определил имена / типы библиотек как постоянные статические и поместил бы их все в другую константу, являющуюся массивом. Что-то вроде этого в моем классе данных const static var TYPE_COMPONENTS: String = "components"; const static var TYPE_INTERFACE: String = "interface"; const static var ТИПЫ: Массив = [TYPE_COMPONENTS, TYPE_INTERFACE];

как только я загружу файл confg xml и могу пройти по дочерним узлам один за другим и посмотреть, соответствуют ли они каким-либо элементам в моем массиве TYPES. Я помещаю все совпадения в групповой загрузчик (http://as3.casalib.org/docs/org_casalib_load_GroupLoad.html) Я также помещаю все ресурсы в массив словарей, так что я могу использовать ресурсы с помощью статических переменных, которые я определил (Data.TYPE_INTERFACE)

Потом жду окончания загрузки.

Когда дело доходит до загрузки ресурсов, я использую getLoader (Data.TYPE_INTERFACE). getDefinition (myClassName) для создания класса

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

Вам нужно знать, как называется класс, чтобы назвать его, я использую другой XML-файл, который определяет, какие классы искать и как их лечить.

Я создаю файлы XML вручную, и иногда мне нужно напоминать себе, какие есть варианты, но можно было бы создать приложение AIR, которое могло бы генерировать эти файлы. Поскольку я использую swf в качестве движка, работающего на компьютере, нет способа узнать, какие библиотеки присутствуют в дочерней папке, как это было бы с технологиями на стороне сервера или AIR, поэтому XML является необходимостью.

Надеюсь это поможет

person Daniel    schedule 08.02.2011
comment
Спасибо, Дэниел, но я дошел до этого с тестами. Моя проблема не в создании SWC, а в его успешном импорте в среду выполнения. - person NemoStein; 09.02.2011
comment
Я использую как Flash CS5, так и Flash Develop (3.3.2). Но те, кто будет делать сцену, будут использовать только Flash (возможно, CS5). Больше всего меня беспокоит упрощение и защита двигателя от недееспособных рук. - person NemoStein; 09.02.2011
comment
После нескольких дней попыток понять это, я заставил getDefinition работать правильно! Спасибо... - person NemoStein; 16.02.2011
comment
Я смущен. Можно ли объяснить это немного подробнее, может быть, для новичка? Спасибо. - person ; 06.03.2011
comment
с какой частью у вас проблемы? - person Daniel; 06.03.2011
comment
Изображения пропали / мертвы. - person ejbytes; 24.01.2017