Ну, не буквально, конечно, но:
Я новичок во Flex и пытаюсь выяснить, куда поместить код, который я хочу запустить при запуске моего приложения. В моем примере у меня есть элемент управления деревом, определенный в разметке, и у меня есть код AS, который может заполнить его из локального файла или веб-службы. Как связать одно с другим, чтобы при создании элемента управления выполнялся код?
Все примеры, которые я нашел в документации, используют обработчики событий, т.е. е. они помещают 'creationComplete = "myInitFunction (evt)"' в открывающий тег элемента управления. Это означало бы, что я пишу небольшую клеевую функцию, которая инициализирует вещи.
Теперь, насколько я понял, разметка действительно конвертируется в классы AS внутри. Так я могу не просто определить класс, который создается движком, и поместить мой код запуска в конструктор? Может быть, даже как расширение класса Tree?
EDIT
Несколько месяцев спустя я стал намного мудрее. После попытки злоупотребить конструкторами расширенных классов компонентов мне пришлось узнать, что Flex не ожидает, что конструкторы будут делать много - конечно, не загружая данные из сети.
Объяснение жизненного цикла компонента в "Программирование Flex 3" было действительно полезным. Теперь все мои конструкторы пусты, и я переопределяю методы жизненного цикла, такие как createChildren
для многих вещей, и использую события для всего, что связано с задержкой или зависит от внешних факторов, особенно от сетевых вещей.
Например, я использую creationComplete
, чтобы инициировать асинхронный сетевой запрос (используя HTTPService
), когда он возвращает обработчики ResultEvent и FaultEvent, ResultEvent обновляет модель данных, к которой я привязал данные своих элементов управления. Это, казалось бы, очень гибкий и прекрасно работает.