Структура проекта и организация работы в команде

18 views
Skip to first unread message

xaerom

unread,
Jan 25, 2010, 10:37:20 AM1/25/10
to ruFlash
Всем добрый вечер.
Давно мучает вопрос как организовать свою работу по проекту,
как отделить графику от кода ( избавиться от fla файлов ),
как грамотно создавать swc файлы,
ну и всякие другие тонкости (соглашения о именовании, структуре
папок ).
В общем интересует не код, а процесс разработки, как это организовано
в вашей компании ( ну или не компании ).

Если кто может поделиться такой информацией, то очень не откажусь. ( А
то постоянно проект превращается в мешанину файлов :( )

Oleksandr Izvekov

unread,
Jan 25, 2010, 11:39:53 AM1/25/10
to ruf...@googlegroups.com
вот как то так у нас:

Project folder
- build /*ant files*/
- deploy
- resources
- - images
- - sounds
- - fonts
- - video
- - ...
- sources
- - classes
- - libraries
- - - src
- - - swc

ресурсы все в embed, библиотеки копируются в каждый проект,
компилится mxmlc, собирается ant'oм, им же разливается на сорсовый и деплой svn.
Flash ide не пользуется совсем.
тем же ant'ом создается структура проекта в начале из темплейта

dmitry zhelnin

unread,
Jan 26, 2010, 3:17:57 AM1/26/10
to ruf...@googlegroups.com
Я, перепробовав разные варианты организации проекта, пришел к такому виду:

 - src
 - - Class.as
 - libs
 - - images
 - - - src
 - - - - images.jpg
 - - - bin
 - - - - images.swc
 - - fonts
 - - - src
 - - - - font1.ttf
 - - - bin
 - - - - fonts.swc
 - - anotherlib
 - - - src
 - - - bin
 - - - - anotherlib.swc
 - bin
 - - debug.swf
 - - release.swf
 - test
 - - test-files

естественно все собирается антом
для каждой картинки скриптом генерируется класс, который и вкомпиливается в swc

при такой организации любой проект может сам стать библиотекой в другом проекте, если собирается в swc (структура у библиотек и корневых проектов одинаковая)



вот как то так у нас:

--
dmitry zhelnin

Илья Плотников

unread,
Jan 26, 2010, 3:45:59 AM1/26/10
to ruf...@googlegroups.com
О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫ О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫. О©╫О©╫О©╫О©╫О©╫ О©╫ О©╫О©╫О©╫О©╫О©╫ О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫
О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫. О©╫О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫ О©╫О©╫О©╫О©╫О©╫ sonatype:
https://docs.sonatype.org/display/FLEXMOJOS/Available+archetypes

POM О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫ pet project`О©╫, О©╫О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫ flexmojos О©╫О©╫О©╫О©╫О©╫
О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫
http://airtranslator.googlecode.com/svn/trunk/pom.xml

IDEA О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫, О©╫ О©╫О©╫О©╫ Flash/Flex Builder
О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫ О©╫О©╫О©╫О©╫О©╫ О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫. О©╫О©╫ О©╫О©╫О©╫О©╫ О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫
О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫ build О©╫О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫, О©╫О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫ О©╫О©╫О©╫О©╫ О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫.

xaerom

unread,
Jan 26, 2010, 3:53:18 AM1/26/10
to ruFlash
Спасибо за ответы

> Flash ide не пользуется совсем.

А как же создается вся анимация и прочие фишки для проекта? Допустим у
меня есть кусок анимации или анимированая кнопка в fla-файле + для
этой кнопки используется несколько классов. Как я понимаю из нее надо
сделать Класс и вкомпилить его в SWC или не так? Где хранится все
добро, которое использовалось для создание компонентов?

xaerom

unread,
Jan 26, 2010, 3:56:17 AM1/26/10
to ruFlash
Или вот это -- ответ на мой вопрос?

- - anotherlib
- - - src
- - - bin
- - - - anotherlib.swc

Oleksandr Izvekov

unread,
Jan 26, 2010, 4:26:33 AM1/26/10
to ruf...@googlegroups.com
90% анимации реализуется программно, особенно кнопочно/компонентная.
Если в проекте есть кусок рисованной анимации, то эмбедится свфкой,
а реализует ее аниматор любым удобным ему способом и отдает swf, но никакого кода там не допускается,
но это бывает очень редко, обычно твинера, сиквенций, видео хватает с головой
Добро для стандартных компонентов можно хранить в swc, но их мы не используем, есть свои

Илья Плотников

unread,
Jan 26, 2010, 5:03:31 AM1/26/10
to ruf...@googlegroups.com
//Предидущее сообщение побилось, поэтому репост:

Смотря чем вы будете собирать. Лично я ратую за стандартизированную мавеновскую сборку. Готовые архетипы можно посмотреть на сайте sonatype:
https://docs.sonatype.org/display/FLEXMOJOS/Available+archetypes

POM файл моего pet project`а, который собирается через flexmojos можно посмотреть на гуглокоде http://airtranslator.googlecode.com/svn/trunk/pom.xml

IDEA нормально поддерживает такие проекты, а вот Flash/Flex Builder такую структуру не любит и диктует свои правила. Но один фиг придется кастомные build скрипты писать, поэтому он идет со своими правилами лесом.

Oleksandr Izvekov

unread,
Jan 26, 2010, 5:08:37 AM1/26/10
to ruf...@googlegroups.com
А я думаю, что идеального варианта не существует. И структуру каждый может придумывать свою,
главое учесть, что проект не должен быть привязан к локальной системе или особенностям ide

- все картинки, шрифты, анимация, звук и остальные ресурсы с исходниками находится в одной из папок
- все библиотеки должны быть перенесены в проект, никаких линкованных папок, через год вы их потеряете/измените/обновите либу и т.д.
- постараться не использовать шрифты, картинки, тексты в fla, во первых может потеряется :) во вторых изменения вносить геморно( как минимум нужно ваше участие что бы достать и положить обратно), нужен flash ide, которая стоит денег
- собирать проект доступным инструментом (например ant)

так в влюбой момент можно вернуться к проекту в любом среде, подключить к нему нового человека,
отдать исходники не боясь, что через 2 года в 3 часа ночи вам позвонят с вопросами почему не компилится. Я если отдаю, то даже flex sdk, которой компилилось, вкладываю, мало ли что с ним произойдет :)

Daniil Tutubalin

unread,
Jan 26, 2010, 6:44:51 AM1/26/10
to ruf...@googlegroups.com
> Если в проекте есть кусок рисованной анимации, то эмбедится свфкой,
> а реализует ее аниматор любым удобным ему способом и отдает swf

А если через некоторое время надо будет внести изменения в анимацию, а
аниматор к тому времени испарился?

По своему опыту говорю: исходники графики должны быть всегда. Если
есть анимация, сделанная с помощью Flash IDE - должен быть fla.
Если этот fla содержит графические файлы (PNG, JPEG и прочее) - все
эти файлы также должны лежать и отдельно, причём их относительный путь
должен соответствовать пути, указанному в fla, чтобы можно было их
изменить и воспользоваться во флеше командой Update.
Если художник предоставил графику в виде PSD, а вырезать и вставлять
во флеш пришлось флешеру, то и PSD тоже должен быть приложен к проекту
(и сохранён в SVN или в другой системе контроля версий).

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

Oleksandr Izvekov

unread,
Jan 26, 2010, 7:05:53 AM1/26/10
to ruf...@googlegroups.com
Flash умеет импортировать с относительным путем?
даже если да, то многие, к сожалению, этого не знают.

pavel...@gmail.com

unread,
Mar 13, 2010, 9:54:47 PM3/13/10
to ruFlash
> Daniil Tutubalin <tutuba...@gmail.com> wrote:
> Если этот fla содержит графические файлы (PNG, JPEG и прочее) - все
> эти файлы также должны лежать и отдельно, причём их относительный путь
> должен соответствовать пути, указанному в fla, чтобы можно было их
> изменить и воспользоваться во флеше командой Update.

Повторю последний вопрос Oleksandr Izvekov -- Flash умеет импортировать
с относительным путем?

Ладно, с проектами вроде более-менее есть общий стиль у разработчиков.
А что с организацией папок для остального? Меня лично интересует куда
класть:
- исходные коды библиотек/фреймворков (которое, например, во флеше
глобальный source path), причём для as2 и as3
- несколько Flex SDK
- файлы сертификатов для AIR
- html-шаблоны со всякими swfobject, swfaddress, swffit,
swfmacmousewheel (причем с разными версиями)
- сами проекты (скажем, папка Projects, в которой лежат папки-
workspace'ы, разбитые по клиентам/средам (я, например, использую FDT,
но есть и один FlexBuilder workspace c парой проектов)

Oleksandr Izvekov

unread,
Mar 14, 2010, 6:53:45 AM3/14/10
to ruf...@googlegroups.com

> А что с организацией папок для остального? Меня лично интересует куда
> класть:
> - исходные коды библиотек/фреймворков (которое, например, во флеше
> глобальный source path), причём для as2 и as3
> - несколько Flex SDK
> - файлы сертификатов для AIR
> - html-шаблоны со всякими swfobject, swfaddress, swffit,
> swfmacmousewheel (причем с разными версиями)

да все туда же класть, в проект :)

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

А вот вещи вроде linked libraries в ftd вообще зло, имхо. мало того что проект привязывается к конкретным ide и системе, так еще и с обновлением либ попасть можно.
вот пример из жизни - было у нас несколько проектов в которых использовался away3d, привязан через linked library
в один прекрасный момент он обновился без обратной совместимости, но заметили естественно не сразу, а через несколько проектов в которых он тоже был задействован. в итоге получили десяток проектов переполовиненых ошибками, меняя версию ошибки появлялись в новых :) проблема усугублялась тем, что старая либа была допилена одним из программеров и успешно забыта, результат был утерян при обновлении :)
вот такую радость получили от этой когда то пропиареной фичи.

Так что в идеале должно быть организовано все так, что бы в любой момент можно было скопировать папку с проектом, перенести и запустить в любой ide :)
А для удобства и скорости создание проекта можно написать ant скрипт, который создаст структуру, подтянет библиотеки из svn, настроит под ide

Daniil Tutubalin

unread,
Mar 14, 2010, 6:55:59 AM3/14/10
to ruf...@googlegroups.com
> Повторю последний вопрос Oleksandr Izvekov -- Flash умеет импортировать
> с относительным путем?

Умеет. Главное чтобы картинка лежала на том же диске, то есть чтобы
относительный путь был вообще возможен.

Сразу после импорта в свойствах библиотечного символа будет абсолютный путь.
Но если закрыть документ и открыть снова - путь станет относительным.

Oleksandr Izvekov

unread,
Mar 14, 2010, 7:07:12 AM3/14/10
to ruf...@googlegroups.com
хм, ну вот только что проверил - создал fla и jpg в одной папке, импортировал jpg, перенес папку, при апдейте flash не может найти картинку.
путь в библиотеке абсолютный. Возможно где то есть настройка, но по умолчанию на маке именно так :(

Daniil Tutubalin

unread,
Mar 14, 2010, 7:33:51 AM3/14/10
to ruf...@googlegroups.com
Хм. А в винде нормально схватывает.

Вывод: для правильной структуризации проекта надлежит отобрать у артистов маки.

Oleksandr Izvekov

unread,
Mar 14, 2010, 7:42:13 AM3/14/10
to ruf...@googlegroups.com
отобрать flash ide эффективнее :)

Павел Гольцев

unread,
Mar 16, 2010, 3:34:39 AM3/16/10
to ruf...@googlegroups.com
> отобрать flash ide эффективнее :)
Ага, а вектор как создавать будете? Программно все рисовать, времени
не напасешься.

Oleksandr Izvekov

unread,
Mar 16, 2010, 4:23:38 AM3/16/10
to ruf...@googlegroups.com
вектор умеет в swf экспортить не только flash :)
да, многие вещи делаются программно, уже более чем 2 года необходимость в flash ide ни разу не возникала
и получается все действительно проще, дизайнерам нет необходимости замарачиваться на flash, программерам на графику

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

Павел Гольцев

unread,
Mar 16, 2010, 2:14:18 PM3/16/10
to ruf...@googlegroups.com
> но думаю и там есть варианты, я просто не в теме :)
Возможно и есть, но изобретать велосипед не вижу смысла ) Но это все
конечно дело вкуса и привычки.
Reply all
Reply to author
Forward
0 new messages