Понимать Flex приложение и рамки - PullRequest
1 голос
/ 15 декабря 2009

Из-за любопытства я пытаюсь понять жизненный цикл, используемый Flex Application.

Итак, я провел небольшое исследование по этому аргументу; две основные концепции, используемые в FlashPlayer:

  • SWF-кадр: это логическая единица, содержащая графический код и код
  • Flash Player Frame: это временной интервал, используемый средой выполнения Flash для обновления экрана и определенный свойством frameRate

Если так, не могли бы вы объяснить мне связь между этими двумя понятиями? В частности, они в паре вместе или нет?

Основное правило: потоки проигрывателя Flash Player в формате SWF; пока не будет прочитан полный кадр SWF, проигрыватель Flash Player не сможет его отобразить.

Я попытаюсь объяснить, что мне нужно понять. Для простоты предположим, что у вас есть приложение с двумя фреймами: SWF FR 1 и SWF FR 2.

В общем случае (например, в CS4) кадр рассматривается как логическая единица (ограниченная тегом ShowFrame), к которой можно прикрепить код as3. Это упрощенная версия SWF-файла, я думаю:

  • Заголовок // frameRate определяется здесь
  • Символы, классы и т.д ... // это FR1 === ShowFrame ===
  • Символы, классы и т.д… // это FR2 === ShowFrame === Конец

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

Итак, могут ли кадры Flash Player происходить много раз за кадр SWF?

Когда FR1 загружается (FR1 загружен не полностью), есть ли какие-либо события enterFrame или нет? Первый frameEvent происходит, когда FR1 полностью загружен? В течение какого времени отображается FR1? В другом сценарии, если вы вызвали команду остановки в FR1, вы получите enterFrame с указанной вами скоростью (текущий кадр - FR1). Тем временем FR2 загружается. Когда он закончен, вы переходите к следующему кадру (FR2). В течение какого времени отображается FR2? Flash Player пытается отрендерить FR2 до следующего интервала времени?

Примите во внимание эту простую последовательность:

  1. FR1 загружает
  2. FR1 полностью загружен
  3. FR1 вызывает метод stop (), а FR2 загружает
  4. FR2 полностью загружен
  5. Перейти к FR2
  6. FR2 вызывает метод stop ()
  7. и т. Д.

Не могли бы вы подчеркнуть для меня, когда происходят события Flash Player enterFrame?

Спасибо за ваше время. С наилучшими пожеланиями, Flex_Addicted.

1 Ответ

0 голосов
/ 21 декабря 2009

Хотя, похоже, вы определенно что-то изучали, некоторые из ваших предположений неверны. Flex - это Flash-код, написанный в одной красивой структуре. Таким образом, все сводится к кадрам, которые представляют собой смесь выполнения кода и результатов выполнения этого кода, рендеринга. Когда весь необходимый код выполнен и процесс рендеринга завершен, кадр завершен, и проигрыватель Flash Player переходит к следующему кадру.

Итак, ваш энтерфрейм называется.

Сейчас, как разработчик Flex, не принято слушать событие enterFrame.

Чтобы понять Flex Apps, вам просто нужно подумать, что это Flash-приложения, первый из которых является загрузочным, а второй - приложением. Все части фреймов составляют подчасти и их отдельные временные рамки. Эта концепция определенно смущает людей, потому что тогда они считают, что enterFrame следует вызывать только дважды, это не так.

Следующее неверное предположение многих людей состоит в том, что из-за того, что «код не выполняется», кадры до сих пор не вызываются. Это также не тот случай. Тот факт, что что-то не меняется, не означает, что кадры не вызываются и - без соответствующих проверок - не происходит больших объемов обработки.

НТН

...