2015-03-17 3 views
0

Я пытался найти правильное решение для этого, но я относительный новичок в AS3 и все еще не совсем уверен, что я там.AS3 Общий код в проекте

Я пытаюсь создать большой проект в AS3 (используя FlashDevelop), который состоит из SWF-корня (называемого Main), который загружается в различные другие swf во время выполнения (например, что-то называется ab.swf). Все эти swf будут совместно использовать значительный код в своем пользовательском интерфейсе (например, кнопки, слайдеры и т. Д.). Я пытаюсь настроить его таким образом, чтобы эти фильмы могли совместно использовать классы AS3 между собой, чтобы как можно меньше сохранять размер файла и время загрузки, сохраняя при этом преимущества завершения кода и других преимуществ времени компиляции сгруппированные вместе.

Я узнал, как использовать ApplicationDomain для создания экземпляров из внешнего SWF-файла, поэтому я мог бы поместить классы в отдельный файл с именем ui.swf, но тогда мой другой код, который ссылается на них, не знает, что их интерфейс есть, и поэтому он не может сказать, правильно ли он написан.

Есть ли способ преодолеть этот пробел? Например, есть ли способ сохранить классы в одном пакете, но не включать их в публикацию, вместо этого заменяя их динамически загруженными версиями? Или, может быть, способ рассказать кино, что такое интерфейс динамически загружаемых классов?

Заранее благодарим за любые идеи.

---- РАЗВЕЙТЕ -----

ОК, так что я рассмотрении этого вопроса, и я думаю, что у меня есть что-то приближающегося правильный ответ. Вот что я имею в виду. Мои общие классы будут привязаны к интерфейсу. Фильм ui.swf будет содержать фактические классы, тогда как ab.swf, main.swf и т. Д. Будут просто импортировать интерфейсы. Тогда я могу использовать код:

var tDomain:ApplicationDomain = uiswf.applicationDomain 
var Button:Class = tDomain.getDefinition("Button") as Class 
var tButton:IButton = new Button() as IButton 

Это похоже на хорошую модель. НО - насколько я вижу, он отклеивается, когда я хочу использовать наследование. Предположим, что сам класс Button расширяет Sprite. Я хочу иметь возможность установить tButton.x, но компилятор не знает, что x является свойством tButton, потому что он не является свойством интерфейса IButton. Как я могу сообщить компилятору, что IButton должен также включать всех членов класса Sprite? Есть ли способ заставить IButton наследовать Sprite как интерфейс?

ответ

0

Взгляните на общие библиотеки времени исполнения.

Смотрите этот же вопрос: What is RSL (Runtime shared library) used for in flash?

+0

Я думал RSL только в AS2? Хорошо, спасибо –

+0

Привет, я изучал RSL, но это не выглядит ужасно перспективным. Я думал, что это наиболее очевидное решение, но учитывая, насколько мало ссылок на них на разных форумах (самая последняя ссылка, которую я могу найти на форуме FlashDevelop, с 2012 года) Я думаю, что они действительно не то, что я находясь в поиске. Похоже, что лучшим вариантом является использование внешнего swf и использование ApplicationDomain, но с использованием интерфейсов, чтобы рассказать отдельным фильмам, что содержат классы. Но я нахожу, что наследование мешает сделать эту работу. –

+0

@ DannyKodicek, как количество ссылок связано с тем, насколько хорошо решение решает проблему? Это, кажется, очень странный вывод. Вы даже пытались использовать их? Но что бы ни плавало на вашей лодке, удачи. – null

Смежные вопросы