Казахстан, Алматы, Гимназия им. Ахмета Байтурсынова №139, 2008 |
Методика организации командной работы над 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 ". Пробуете откомпилировать. Если работает - значит, виноват этот символ. Теперь попробуйте опять поставить галочку и еще раз откомпилировать. В большинстве случаев это помогает.