2009-07-15 3 views
1

У меня есть некоторые пользовательские компоненты, полученные из UIComponent. Я перегрузил updateDisplayList, чтобы у них был обычай. Я создал layouter, который излагает эти пользовательские компоненты, но чтобы правильно их разместить, я должен знать ширину и высоту пользовательских компонентов. Они создаются динамически. После того, как все они созданы (создание завершено для каждого события), я пытаюсь их выложить, но свойство width/height все равно 0. Я также пытаюсь добавить их на холст перед процессом компоновки.получить ширину динамически созданного пользовательского uicomponent

Итак, мой вопрос в том, как создать пользовательский UIComponent, который динамически размещен и узнать его ширину и высоту.

благодаря


редактировать:

С использованием mx_internal пространства имен можно установить ширину и высоту (используя внутренние $ и ширины $ высоты поля), и похоже, что он работает , Но не так чистое/хорошее решение.

ответ

1

Если вы унаследовав от UIComponent, а не от одного из его подклассов, вы, вероятно, хотите, чтобы убедиться, что вы реализуете метод измерения(), среди других. Проверьте Flex документов здесь для получения дополнительной информации о реализации собственного UIComponents - есть хорошая куча информации, чтобы прочитать здесь, но это все вещи, вероятно, вы должны знать, если вы вывод из UIComponent непосредственно:

http://www.adobe.com/livedocs/flex/3/html/help.html?content=ascomponents_advanced_3.html

Надеюсь, это поможет! Вы также можете попробовать разместить небольшой код, чтобы у нас было что-то более конкретное. Но, скорее всего, вы просто не внедряете то, что вам нужно, чтобы получить эти значения. (И ваш инстинкт верен - вам не нужно копать в mx_internal, чтобы получить то, что вам нужно.)

+0

Также может быть разница, когда вы добавляете пользовательские компоненты. Добавляются ли они в метод createChildren или в метод updateDisplayList или в MXML? Но я подозреваю, что проблема в том, что у детей нет шага «меры». – Glenn

0

Возможно, это работает?

component.getExplicitOrMeasuredWidth() 
component.getExplicitOrMeasuredHeight() 
+0

это возвращает явно установленную или измеренную ширину, но оба равны нулю. только поля $ width/$ height содержат что-то полезное после создания и рисования. Могу ли я использовать эти поля каким-либо образом или заставить компонент записывать свои значения в поля width/height/measuredWidth ..? – spupek

+0

С помощью пространства имен mx_internal я могу установить ширину и высоту, и похоже, что он работает. Но не так чистое/хорошее решение. – spupek

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