Подклассы fl.core.UIComponent во Flash

Всякий раз, когда я хочу что-то нарисовать во Flash, я делаю подкласс fl.core.UIComponent вместо Sprite или Movieclip из-за его более широкой реализации ширины / высоты (примечание: это не Flex UIComponent).

Например, представьте, что у вас есть кнопка - хороший вариант использования для UIComponent - но у кнопки есть значок, текстовая строка и стрелка раскрытия. т.е. 3 детей. Я бы тоже сделал этих 3 детей UIComponents.

Я знаю, что мог бы создать свой собственный подкласс Sprite, который переопределяет методы и свойства width / height, но кто-нибудь видит какие-либо недостатки в использовании UIComponent таким образом?

1 ответ

Всякий раз, когда я хочу что-то нарисовать во Flash, я делаю подкласс fl.core.UIComponent вместо Sprite или Movieclip из-за его более широкой реализации ширины / высоты (примечание: это не Flex UIComponent).

Я считаю, что это в значительной степени зависит от требований вашего проекта. Если вы используете другие fl.controls, возможно, имеет смысл совместить ваши пользовательские компоненты с остальными компонентами flash по разным причинам (например, передача с использованием dataProviders или других данных)

Например, представьте, что у вас есть кнопка - хороший вариант использования для UIComponent - но у кнопки есть значок, текстовая строка и стрелка раскрытия. т.е. 3 детей. Я бы тоже сделал этих 3 детей UIComponents.

Этот пример не особенно хорош, потому что компонент Button (fl.controls.Button) уже имеет значок, который вы установили с помощью setStyle ():

myButton.setStyle("icon", MyIconClass);

Я знаю, что мог бы создать свой собственный подкласс Sprite, который переопределяет методы и свойства width / height, но кто-нибудь видит какие-либо недостатки в использовании UIComponent таким образом?

Лично я стараюсь сделать вещи максимально простыми. Если это необходимо для создания подкласса UIComponent, сделайте это, но помните о жизненном цикле компонента с помощью архитектуры компонента Flash V3 (fl.controls). Старайтесь не фиксировать / аннулировать часто, так как это может вызвать проблемы с производительностью, которые становятся заметными при использовании большего количества экземпляров.

Джефф Камерер (Jeff Kamerer) предлагает очень хорошую серию статей о создании компонентов ActionScript 3.0 во Flash. Вот некоторые из затронутых тем:

  • Настройте слои и кадры в символе видеоклипа вашего компонента
  • Реализация Live Preview для вашего компонента
  • Отправка событий
  • Поддержка стилей и легко редактируемых скинов
  • Управление рисованием с моделью аннулирования
  • Управление фокусом
  • Ручка ввода с клавиатуры
  • Создайте скомпилированный клип для ваших определений ActionScript
  • Разверните свой компонент на панели "Компоненты"

Короче говоря, если вы можете обрабатывать изменение размера / позиционирование без создания подклассов UIComponents, я бы порекомендовал это. Чем проще, тем лучше. Кроме того, вы не будете вводить зависимость для компонентов V3, когда вам нужно будет перенести части ваших проектов. Если вы должны создавать подклассы UIComponents, держите их как можно более простыми / легкими. Лично я думаю, что они уже достаточно сложны, но, по крайней мере, они лучше, чем компоненты V2 (actionscript 2).

НТН

Другие вопросы по тегам