Всё в чём я сомневаюсь, буду помечать знаком (#?) где #- ID сомнения (для последующего комментирования).
SystemManager
- Является корневым объектом (Root) SWF.
- Является классом, инстанцируемым в первую очередь.
- Контролирует и координирует инициализацию приложения
- инстанцирует и отображает класс Preloader
- инстанцирует класс Application - Управляет слоями порожденных объектов, отвечающих за всплывающие окна (popups), курсоры и контекстные подсказки (tooltips)
- Способствует управлению классами в ApplicationDomain-ах
Инициализация Flex SWF
- SWF Flex-приложения является клипом с двумя фреймами
- Первый фрейм содержит:
- SystemManager,
- Preloader,
- DownloadProgressBar
- несколько вспомогательных классов. - Второй фрейм содержит:
- остальные элементы фреймворка,
- код приложения
- ассеты (вспомогательные средства) - внедренный шрифт, графика и т.д.
Кастомные (пользовательские) компоненты и все их ассеты располагаются во втором фрейме.
Инициализация Flex SWF. Frame 1
- Загружается объем данных, достаточный для активизации первого фрейма
- Flash Player выполняет полученные данные. При этом:
- он инстанцирует SystemManager
- SystemManager командует проигрывателю остановиться на конце фрейма (1?)
- SystemManager создает Preloader
- Preloader создает DownloadProgressBar
- Preloader и DownloadProgressBar начинают осуществлять мониторинг загрузки оставшихся данных
- SystemManager начинает прослушивать событие frameEnd - Flash Player останавливается на конце фрейма и продолжает загружать SWF-файл.
Инициализация Flex SWF. Frame 2
- Как только все данные будут загружены, Flash Player генерирует событие frameEnd
- SystemManager инстанцирует класс Application
- устанавливает ссылку на себя в свойство Application.systemManager
- SystemManager начинает прослушивать событие preloaderDone
- Application создает все свои объекты (children) - Flash Player начинает посылать событие enterFrame и выполнять события Events
- LayoutManager обрабатывает созданные объекты - В конечном счете, приложение (Application (2?)) генерирует событие о завершении своего создания creationComplete
- Preloader начинает удаление DownloadProgressBar
- Preloader генерирует событие preloaderDone
- SystemManagers добавляет Application в дисплей-лист
- SystemManagers командует Application генерировать событие applicationComplete
Информация, приведенная выше, ознакомила нас в общих чертах с процессом инициализации Flex-приложения. Если не обращать внимания на пару вопросов, всё предельно ясно.
В контексте темы загрузки и инициализации, хочется еще раз упомянуть создание прелоадера для Flex-приложения. Любопытно, что в описанном этой статьей методе, специально указывается мета-тег для генерации второго фрейма [Frame(factoryClass="MyFactoryClass")]
. Если верить "Внутренностям Flex", то на самом деле, мета-тег не "вынуждает" создавать второй фрейм, а лишь объявляет factoryClass, а второй фрейм присутствует по-любому во всех Flex-приложениях.
Продолжение "внутренностей" - вторую часть этого увлекательнейшего документа - мы очень жаждем увидеть у Роста на горячо нами любимом Флэш Потрошителе.
2 комментария:
Я ужасный человек, я до сих пор держу перевод второй части в ящике стола.
Этот перфекционизм когда-нибудь меня убъет.
Но я помню.
Жду, недождусь :)
Да уж, актульность потихоньку спадает, появляются новые материалы по этой теме, но всё же почитать вторую часть в твоем переводе очень хочется.
Кстати, я к первой части уже не раз обращался в процессе работы. Значит польза есть :)
Отправить комментарий