Flex: шесть секунд между инициализацией и creationComplete - PullRequest
0 голосов
/ 04 апреля 2011

Я работаю с большими flex-приложениями и заметил, что один из наших самых больших компонентов (с большим количеством дочерних полотен) занимает около 6 секунд между событиями initialize и creationComplete. Я немного читал и обнаружил, что наличие большого количества вложенных холстов может привести к замедлению, но я не уверен, что это будет именно там? У кого-нибудь есть какие-либо предложения по ускорению этого процесса или даже по диагностике того, откуда происходит замедление?

Ответы [ 3 ]

2 голосов
/ 05 апреля 2011

По моему опыту, вложенные контейнеры с динамическими размерами являются наиболее частой причиной этих типов лагов.Некоторые вещи, которые нужно попробовать:

  • Установите явные размеры / позиции для ваших контейнеров / компонентов, когда это возможно.Это уменьшает невероятное количество измерений, которые выполняются в рамках во время процесса создания.

  • Уменьшите количество вложенных контейнеров.Звучит очевидно, но удивительно, сколько вы можете сократить, когда вы начинаете критически смотреть на то, как настроен ваш пользовательский интерфейс.В частности, существуют ли контейнеры HBox и VBox, от которых можно избавиться, просто задав явные позиции / размеры для дочерних компонентов?Вы действительно должны использовать контейнер Form?

  • Переключите свои контейнеры на гораздо более легкие Spark группы вместо использования более тяжелого Canvas, где это возможно.*

    Надеюсь, это поможет.Если нет, опубликуйте код, чтобы мы могли разобраться с вашей конкретной проблемой.

1 голос
/ 05 апреля 2011

Одновременное добавление множества экранных объектов в список отображения может занять много времени, особенно если мы говорим о Flex-контейнерах, в которых есть компоновка и логика прокрутки.Поскольку вы говорите, что используете много контейнеров Canvas, это может быть проблемой, с которой вы столкнулись.

Я знаю, что многие разработчики злоупотребляют свойством creationPolicy.Обычно он установлен на "auto", что позволяет Flex откладывать создание экземпляров дочерних элементов контейнера до очень короткого времени «позже».Часто до следующего кадра, поэтому вы даже не видите разницы.Случайно ли вы установили creationPolicy на "all" где-нибудь в этой иерархии?Это может привести к немедленному созданию холстов и их детей.

1 голос
/ 05 апреля 2011

Самая важная вещь, которую следует учитывать - это использовать VBox и / или HBox вместо некоторых динамически генерируемых x и y.VBox и HBox намного эффективнее.Посмотри на это!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...