пятница, февраля 22, 2008

Внутренности Flex Framework. Flex SWF. Flex

Заканчиваем изучать первую часть "Внутренностей Flex Framework".
Всё в чём я сомневаюсь, буду помечать знаком (#?) где #- 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 комментария:

Ростиславр комментирует...

Я ужасный человек, я до сих пор держу перевод второй части в ящике стола.

Этот перфекционизм когда-нибудь меня убъет.

Но я помню.

Racer комментирует...

Жду, недождусь :)

Да уж, актульность потихоньку спадает, появляются новые материалы по этой теме, но всё же почитать вторую часть в твоем переводе очень хочется.

Кстати, я к первой части уже не раз обращался в процессе работы. Значит польза есть :)