![]() |
Организация классов в проекте
Доброго времени суток.
У меня появилась проблема - есть 2 проекта, один подгружается в другой, общаются друг с другом через интерфейсы. Дело в том, что некоторые функции интерфейсов возвращают объекты классов которые есть в одном проекте, но нет в другом, а интерфейсы общие: Код:
InterfacesКод AS3:
При компиляции Project2, мне естественно выдаёт Код:
Type was not found or was not a compile-time constant: Class1Или чтобы метод в интерфейсе возвращал '*' . В принципе сейчас таки делаю, но по идее если кто после меня будет дописывать что-то, через довольно короткое время он захочет меня найти и придушить :) , т.к. автокомплита нет, и все ошибки в рантайме будут выскакивать. Может есть другой выход? |
Заведите абстрактный класс, от которого будет происходить ваш Class1 и возвращайте его в геттере.
Или я не понял сути проблемы? |
Суть в том что классы Class1 и Class2 не видны в Project2, но они используются в интерфейсах. И когда я использую интерфейсы в Project2, мне выдаёт ошибку что нет таких классов - Class1 и Class2.
А чем поможет завести абстрактный класс для Class1? Скорее всего придётся для Class1 делать отдельный интерфейс. |
Цитата:
|
Я понимаю что это естественное поведение, и я ищу самое простое решение. А почему абстрактные классы а не интерфейсы?
|
Одно непонятно, что Вы собираетесь делать с компонентом неизвестного класса?
По-идее, если Вам действительно не нужно знать класс1 во втором проекте, то и общий Интерфейс просто не должен содержать методы, возвращающие этот тип. Можно завести метод, возвращающий тот же объект-компонент как понятный (и удобный) второму проекту тип, например DisplayObject, а неподходящий (не общий) метод не включать. Если этот метод нужен в Интерфейсе для первого проекта, то сделать второй, не общий, интерфейс, расширяющий первый этим "неудобным" методом. А лучше вообще возвращать из методов интерфейсы, а не классы, раз уж такое разделение)) Добавлено через 52 секунды Ну вот, пока писал, сами всё сообразили))) |
Цитата:
http://joshblog.net/2007/08/19/enfor...ctionscript-3/ По мне так лучше все-таки интерфейс создать. П.с. пока читал тему, хотел ответить почти то же самое, что написал Wolsh ) |
Цитата:
|
Если суть задачи в том, чтобы не дублировать класс в каждой флешке, т.как известно, что в рантайме кто-то только один его должен загрузить, то есть смысл подумать об RSL. Оно для того и предназначено, вобщем. Т.е. скомпилировать класс не использующийся в проекте в библиотеку swc, библиотеку добавить в проект как external-library. Но нужно не забыть, что класс из этой библиотеки кто-то должен загрузить, и, по возможности, раньше, чем он потребуется где-то в другом месте.
|
|
| Часовой пояс GMT +4, время: 09:20. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.