Flex: Как создать совершенно новый компонент?

Вам также необходимо добавить DesktopFormFactor в versionOverrides.

5
задан David Koelle 28 January 2009 в 19:44
поделиться

5 ответов

Вы хотите создать компонент, который переопределяет updateDisplayList метод, и сделайте свой рисунок там:

override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void
{
  super.updateDisplayList( unscaledWidth, unscaledHeight );

  // The drawing API is found on the components "graphics" property
  graphics.clear();
  graphics.lineTo( 0, unscaledWidth );
  // etc
}

Больше информации может быть найдено здесь: http://livedocs.adobe.com/flex/3/html/help.html?content=ascomponents_advanced_3.html

5
ответ дан 18 December 2019 в 13:20
поделиться

Я предложил бы смотреть на flexlib проект, если Вам нужны примеры пользовательских компонентов.

Существует хорошая общая информация в livedocs здесь

Хотя можно создать пользовательские компоненты в MXML и в ActionScript, я рекомендовал бы реализовать их в ActionScript.

Короче говоря это - то, что необходимо сделать:

При создании пользовательского компонента в ActionScript необходимо переопределить методы класса UIComponent. Вы реализуете основную структуру компонента, конструктора и createChildren (), commitProperties (), мера (), layoutChrome (), и updateDisplayList () методы.

4
ответ дан 18 December 2019 в 13:20
поделиться

Я рекомендую читать учебный ряд с 5 частями Peter Ent при создании пользовательских компонентов. Вот ссылка на Часть 1.

Также рекомендуемый, учебный ряд на ItemRenderers и ItemEditors.

3
ответ дан 18 December 2019 в 13:20
поделиться

Глава 19 Программирования Flex 2 Kazoun и Lott показывает модель событий конструкции, а также модель событий обновления.

Короче говоря, структура компонента Flex предполагает, что у Вас есть свойства объекта, которые влияют на его появление. Вместо того, чтобы сразу применить изменения, это позволяет мутаторам свойства делать недействительным "содержание" компонента (например, текст) через наследованный invalidateProperties () метод. Каждый также называет invalidateSize (), когда изменение свойства будет, ummm, изменить размер компонента и invalidateDisplayList (), когда вещи должны будут быть перерисованы (в противоположность просто наличию другого текста).

Эта модель аннулирования оптимизирует работу компонента. Это не измеряет себя, если это не знает, что изменило размер; это не помещает и тянет себя, если что-то не назвало invalidateDisplayList () с прошлого раза, когда это обновило свое расположение; и это не перемещает значения своих свойств в его субкомпоненты, если это не знает, что те значения изменились.

Удачи

1
ответ дан 18 December 2019 в 13:20
поделиться

Типичное поведение состоит в том, чтобы разделить существующий компонент на подклассы, главным образом потому что большая часть работы реализации функциональности столь многих самых типичных видов компонентов уже сделана для Вас - просто необходимо знать, какой компонент больше всего напоминает тот, который Вы хотите создать. (Проблема самостоятельно, данный, сколько существует.)

Если Вам нравится, тем не менее, можно создать симпатичный базовый UIComponent "с нуля" просто путем расширения UIComponent (который даст Вам весь базовый материал), или я предполагаю, если Вы действительно идете для минимализма, и Вы подлежите проблеме, можно просто реализовать IUIComponent и определить каждый метод интерфейса вручную. Если Вы действительно принимаете решение пойти тем вторым путем, сделать себе одолжение и слушать этот разговор сначала - это - всестороннее обсуждение Архитектуры компонента Flex, данной одним из инженеров в команде Flex. Я часто рекомендую это, и высоко; это превосходно, и это разъясняет много деталей разработки компонента, которые все еще не являются всем, что хорошо зарегистрировало. Чрезвычайно ценный материал, если Вы собираетесь быть создающими нетривиальными пользовательскими компонентами вида, Вы описываете.

Надежда это помогает.Удачи!

1
ответ дан 18 December 2019 в 13:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: