импорт и структура пакета в as3/flex

У меня возникла проблема с организацией файлов и пакетов в проекте AS3/Flex. Краткое введение в проблему:

Структура файлов в проекте такая (и должна оставаться) такая:

libs/Class1/src/<files>
libs/Class2/src/<files>
libs/Class3/src/<files>

Переменная source-path компилятора amxmlc указывает на:

libs/

Мне это нужно, потому что я должен создать подкласс Class1 в Class3. Это подталкивает меня к тому, чтобы поместить все классы в пакеты, которые выглядят вот так странно:

package ClassX.src { /* ... */ }

Итак, на практике это выглядит так:

package Class3.src
{
    import Class1.src.Class1; // I prefer direct imports

    public class Class3 extends Class1 { /* ... */ }
}

Есть ли способ сохранить структуру файлов/папок и избавиться от src в имени пакета. Изменение структуры файлов или прямое указание компилятора на каталог базового класса не вариант.
Это действительно сбивает с толку новых программистов, которые присоединяются к проекту, и мы действительно хотим этого избежать.

Большое спасибо за ЛЮБУЮ помощь!!!


person trzewiczek    schedule 15.04.2010    source источник
comment
Я согласен, что это очень запутанно и необычно. Но я не понимаю, почему структура была создана именно так? Почему вы помещаете папки src в папку lib? Если вы хотите предоставить библиотеки, создайте SWC и поместите их туда.   -  person ilikeorangutans    schedule 15.04.2010
comment
Это проект svn, который включает в себя более пяти различных языков программирования, и структура каталогов должна быть такой же для всего проекта. Имя libs/ немного вводит в заблуждение. Внутри есть swc lib, но классы, о которых я упоминал ранее, являются чем-то вроде плагинов для основного приложения. Каждый ClassX представляет собой один плагин, поэтому они не являются стандартными библиотеками, которые нужно закрывать в swc, но каждая из них создается сама по себе, и некоторые из них должны быть открыты для создания подклассов. Упрощенный оператор импорта был бы действительно ЛУЧШИМ вариантом. Я не знаю, как заставить его. К сожалению, * не углубляется в структуру каталогов.   -  person trzewiczek    schedule 15.04.2010


Ответы (2)


Итак, здесь есть две вещи. Во-первых, это то, как эти «плагины» включаются в проект, а во-вторых, оператор импорта.

О плагинах: вам действительно стоит подумать о том, чтобы сделать их SWC. Вы можете создавать подклассы классов, которые находятся в SWC, поэтому нет необходимости иметь там код. Просто мое внутреннее чувство подсказывает мне, что это может вызвать много путаницы.

Об импорте: я не думаю, что есть способ обойти это, если вы не измените структуру своего пакета. Как вы заметили, '*' будет импортировать пакеты только на одном уровне, поэтому вам придется импортировать каждый пакет/класс.

person ilikeorangutans    schedule 16.04.2010

Единственный способ избавиться от пакета src — изменить структуру файла.

Что касается плагинов, я бы создал отдельный «Проект библиотеки Flex». Затем вы можете либо поместить пакеты плагинов непосредственно в корневой каталог этого нового проекта, либо, поскольку вы не хотите изменять файловую структуру, вы можете добавить папки в свойствах плагина Flex Library Project на вкладке «Исходный путь» в разделе Путь сборки библиотеки Flex.

Чтобы импортировать плагины в другой проект, вам нужно будет добавить проект библиотеки Flex в путь к библиотеке импортирующего проекта (также вкладку в свойствах проекта в разделе «Путь сборки»)

person squinlan    schedule 16.04.2010