2012-06-02 3 views
0

Я новый в flex, и может ли кто-нибудь мне помочь?Как создать конструктор компонентов MXML с аргументами?

Как создать конструктор, который принимает аргументы для компонента MXML?

+0

Возможный дубликат [этого сообщения] (http://stackoverflow.com/q/8283934/645918) – Art

+1

Я не уверен, почему это было закрыто; полный вопрос был в строке темы вместо основного текста; но это может быть легко устранено. – JeffryHouser

ответ

2

Вы не можете; Компоненты MXML не имеют конструкторов, которые вы можете изменить.

У вас есть несколько вариантов. Во-первых, переписать компонент для использования ActionScript. Это может быть утомительным в некоторых ситуациях и тривиальным в других. Это зависит от того, что делает компонент.

Второй вариант os использовать общедоступные переменные для компонента. Когда вы создаете экземпляр вашего компонента MXML, задайте его свойства. Вы должны иметь доступ к таким свойствам в обработчике событий preinitialize. prenitinialize будет отправлен после конструктора, но до createChildren().

+1

Однако, вероятно, лучше использовать методы жизненного цикла (в частности, commitProperties и updateDisplayList) для распространения изменений, необходимых в результате настроек переменных. Таким образом ваш компонент может справиться с этим, если эти свойства будут изменены. –

+0

@AmyBlankenship Использование события preinitialize использует жизненный цикл компонента; хотя и не один из методов события рендеринга. «Лучший» подход зависит от того, что нужно установить и как это влияет на другие вещи в компоненте. Если компоненту нужен «код конструктора», то событие preinitialize - это самое близкое, что вы можете получить в компоненте MXML. – JeffryHouser

+1

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

Смежные вопросы