Опубликован: 23.12.2005 | Уровень: специалист | Доступ: платный | ВУЗ: Московский физико-технический институт
Лекция 13:

Методика организации командной работы над Flash-проектом

Использование #include

Как мы видели, использовать механизмы sharing часто бывает удобно, однако это сопряжено и с рядом неприятностей. Если вам нужно всего лишь определить несколько функций (или классов) для общего пользования, то есть ничего кроме кода на ActionScript не нужно делать, проще воспользоваться инструкцией #include.

Шаблоны для разработки

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

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

Шаблоном мы будем называть заготовку, *.fla-файл, в который программист тщательно собирает все элементы общего пользования, которые могут понадобиться дизайнерам. Разработку своего модуля дизайнер начинает с того, что сохраняет готовый шаблон в свою рабочую директорию - естественно под новым именем. Впрочем, эта простейшая операция в сочетании с author time sharing имеет некоторые особенности, про которые мы расскажем далее в этой лекции в разделе " Библиотеки "). Нужно помнить, что с того момента, как дизайнер забрал к себе этот файл, мы практически не будем иметь доступа к тому, что там находится. Практически - потому, что есть еще author time sharing. Таким образом, разумно будет все, что мы положим в шаблон, разместить в одном или нескольких клипах, для которых author time sharing включен.

Рассмотрим в качестве примера кое-какие вещи из тех, что могут лежать в шаблоне (практически все они по отдельности уже упоминались выше).

Библиотека компонентов

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

Скорее всего, вы применяете runtime sharing или author time sharing (или оба вместе) для своих компонентов повторного использования. В таком случае в шаблоне у всех этих компонентов должны быть установлены настройки для импорта (из библиотечных файлов).

#include

Если во всех флэш-роликах вы пользуетесь какими-то общими функциями и классами, вполне можно сразу подключить эти #include -файлы в шаблоне.

Возможно, лучше подключение всех #include -файлов сгруппировать в клипе (опять-таки, author time shared ), чтобы всегда можно было добавить или удалить какой-то из них централизованно.

Сцена с runtime-загрузчиками

Вы помните, что для корректной работы runtime-shared компонентов необходимо сделать специальную процедуру (см. ранее в этой лекции).

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

Чтобы сделать сцену, откройте панель Scene ( Shift-F2 ) и нажмите на кнопку с изображением плюса. Сцены можно менять местами с помощью перетаскивания их мышью.

Сцена со счетчиками загруженных модулей

Авторы предлагают выделить в шаблоне еще одну сцену (вторую), в которую положить клип, группирующий все счетчики числа загруженных модулей. Таким образом, первая сцена будет инициировать загрузку всех нужных *.swf-файлов, а вторая - дожидаться окончания этой загрузки.

Управление процессом

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

Например:

//скрытие всего _root'а (пока идет загрузка);
_root._visible = false;
// ожидание в трехкадровом цикле, пока не загрузятся всe
// .swf-модули (см. ранее в этой лекции);
if (_global.SWFModulesLoaded < _global.TOTAL_SWF) gotoAndPlay (2);
//применение нужных стилей ко всем контролам, которые теперь
// уже успели загрузиться;
_global.locTextStyleFormat.applyChanges(); //
_global.btnTextStyleFormat.applyChanges(); //
//посылка каких-то внутренних управляющих событий;
this.raise("InitializationComplete", "InitializationComplete",
   EVT_TYPE_STRING);
this.raise("ModelInitializationComplete",
"ModelInitializationComplete", EVT_TYPE_STRING);
//обработка XML-скриптов;
if (_global.iniFileParams.xmlSetupString != undefined)
_global.ext.importFromXml(_global.iniFileParams.xmlSetupString);
_global.ext.sendRestoreStateEvent();
}
//открывание всего _root'а (все загружено);
_root._visible = true;
//остановка главного клипа
stop();

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

Некоторые проблемы со сложными шаблонами

Иногда в сложных шаблонах начинает происходить одна очень неприятная вещь - среда разработки Flash MX падает с сообщением "Pure virtual function called". Скорее всего, это связано с "многозвенным author time sharing ". Изложим способ борьбы с этим явлением (если уже некогда выяснять, в чем причина, а нужно как-то "жить"). Просматриваете самые "сомнительные" (особенно с многозвенным author time sharing ) символы из библиотеки и убираете в их параметрах галочки " always update before publishing ". Пробуете откомпилировать. Если работает - значит, виноват этот символ. Теперь попробуйте опять поставить галочку и еще раз откомпилировать. В большинстве случаев это помогает.

алексеи федорович
алексеи федорович
Беларусь, рогачёв
Тамара Ионова
Тамара Ионова
Россия, Нижний Новгород, НГПУ, 2009