Как узнать, когда компонент MXML полностью завершил создание?

Компонент MXML может быть довольно сложным и содержать множество вложенных элементов управления, включая асинхронно загружаемое содержимое, такое как Image / SWFLoader.

Есть ли одно событие, за которым я могу наблюдать в своем компоненте, которое будет возникать только после загрузки всех элементов управления и подкомпонентов, включая SWF-файлы и изображения?


person MidnightGun    schedule 30.09.2008    source источник


Ответы (4)


CreationComplete НЕ поможет, если вы говорите о загрузке SWF-содержимого или чего-то действительно внешнего в этом роде. CreationComplete запускается, когда компоненты MXML размещены, как определено в MXML (вложенные компоненты IE, кнопки, блоки, холсты и т. Д.), Поэтому контент, который необходимо загружать извне (изображение, swf), не учитывается.

Что вам нужно сделать, так это отслеживать все, чего вы ждете, и запускать настраиваемое событие после загрузки всех этих элементов.

Один из возможных хакерских способов сделать это - прослушать любое событие завершения загрузки, относящееся к каждому элементу, а затем попросить их обратный вызов той же функции, которая увеличивает значение, равное количеству компонентов, которые вы ждете. Это означает, что вам нужно уделять больше внимания, если вы его изменяете, но это также означает, что вам не нужно проверять логическое значение для каждого элемента, который необходимо загрузить (IE «if (image1Loaded && image2Loaded && swfLoaded)» и т. Д.)

person Aaron    schedule 30.09.2008
comment
Я согласен, у меня сработала схема увеличения / уменьшения. Я создал подкласс Image и заставил его запускать событие пузыря, когда оно начинает загрузку и когда загрузка завершается. Я ловлю их все в содержащемся компоненте. - person Ben Throop; 10.11.2008

Событие onApplicationComplete?

person Swaroop C H    schedule 30.09.2008

Событие creationComplete должно помочь - creationComplete вызывается в родительском компоненте после того, как он вызывается в дочерних компонентах.

Вы можете получить дополнительную информацию о жизненном цикле компонента в Adobe docs.

person Max Stewart    schedule 30.09.2008

В некоторых сложных случаях, например, когда ваш компонент считается "завершенным", только когда некоторые данные были получены через HTTP или что-то в этом роде, лучше всего выбрать настраиваемое событие.

person Borek Bernard    schedule 30.09.2008
comment
привет борек, быстрый вопрос об этом посте. знаете ли вы, возможно ли выполнить запрос HTTPservice ДО того, как будет создан компонент? (получить переменную из базы данных, которая будет использоваться в качестве переменной при создании компонента?) Если вы знаете, дайте мне знать =) - person Rees; 02.04.2010