| « Когда мало места | Умная презентация » |
Конструктор, часть 1
Начиная с этого поста я попробую коротко и ясно рассказать про интересные аспекты flash-части проекта my.futbolka.ua. Flash 8, AS 2.0.
Сразу скажу, что не открою секретов или “tricks", но возможно мой опыт (и мои ошибки) будут Вам полезны.
Упрощение развертывания и отладки. Описание проблемы.
Для проекта такой длительности (от 100-150 часов) необходимо заранее уменьшить транзакционные расходы, чтобы было легче жить. Конкретно:
- Как организовать загрузчик (Preloader)
- Как быстро при рабочей локальной версии сделать рабочую серверную, напр. брать файлы с нужных адресов
- Как обеспечить комфортную отладку на сервере, в данном случае - отображение trace()
Решение: Local to Global.
Обычно вопросы конфигураций при компилировании решаются командами препроцессора. В AS 2.0 набор команд ограничивается #endinitclip, #include и #initclip, очевидно что они ничего в этом случае не дадут.
В конструкторе футболок в package model есть отвечающий за это класс LinkSet, большинство свойств и функций в нем поставляют адреса для остальных компонент:
- class model.LinkSet {
- //
- // properties
- //
- // local - флаг локальной версии, остальные относятся к отладке
- public static var local:Boolean = false;
- public static var viewDebugOrder:Boolean = false;
- public static var debugSaveImages:Boolean = false;
- //
- // functions
- //
- // Эту функцию использует прелоадер, т.к. адрес загрузки основного клипа тоже меняется
- public static function get constructorUrl():String
- {
- if (local)
- return "constructorBig.swf";
- else
- return "/constructor/constructorBig.swf";
- }
- // Адрес для отправки данных: локально не используется
- public static function get orderSendUrl():String
- {
- if (local)
- {
- throw new Error("LinkSet::orderSendUrl called local");
- return null;
- }
- else
- {
- return "/order.php";
- }
- }
- // Начало, как правило общее для многих путей как локально так и на сервере
- public static function get linkBase():String {
- if (local)
- return "serverXML/";
- else
- return "/engine.php?type=";
- }
- // Адрес для типичного запроса - xml с описанием
- // категорий основ (футболки, кепки и т.п.)
- public static function getBaseCategoryLink():String {
- if (local)
- return linkBase + "bases.xml";
- else
- return linkBase + "bases";
- }
- // ...
- }
Доступ ко флагам public - другие компоненты тоже могут их видеть (можно дописать еще кода и сделать эти их read-only).
Прелоадер при компиляции также работает с LinkSet.constructorUrl(), в итоге мы получаем настройку прелоадера и основного клипа одной переменной - LinkSet.local .
Есть способ лучше - сделать загружаемый конфигурационный xml-файл, в котором описать нужные параметры - тогда локальную .swf можно смело заливать на сервер, на котором лежит нужный xml-конфиг.
Об отладке и trace()
Есть разные способы отладки приложения на сервере, меня устроил один из самых простых: устанавливается плагин Flash Tracer для Mozilla Firefox (комментарии к установке от Роста) и окошечко Output из среды разработки фактически перемещается в сайдбар Firefox’а.
Трекбек адрес этой записи
URL трекбека (щелкните правой кнопкой мыши и скопируйте ссылку)




