Как узнать, когда компонент MXML полностью завершил создание? - PullRequest
2 голосов
/ 01 октября 2008

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

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

Ответы [ 4 ]

2 голосов
/ 01 октября 2008

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

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

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

1 голос
/ 01 октября 2008

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

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

1 голос
/ 01 октября 2008

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

1 голос
/ 01 октября 2008

Событие onApplicationComplete?

...