Московский физико-технический институт
Опубликован: 23.12.2005 | Доступ: свободный | Студентов: 2868 / 252 | Оценка: 4.61 / 4.44 | Длительность: 27:18:00
ISBN: 978-5-9556-0051-2
Лекция 11:

Компоненты: готовые и "самодельные"

Пишем собственный компонент

Что вообще означает словосочетание "собственный компонент "? Ведь в слова "стандартный компонент " мы вкладывали сразу несколько вещей: это элемент управления (контрол), он доступен из панели Components, он является наследником FUIComponent. Но, оказывается, все это - не основные признаки компонентов, и у ваших компонентов их может не быть (и многих, скорее всего, не будет). Важно другое: то, что компоненты - это клипы, которые имеют настраиваемые параметры, причем эти параметры могут настраиваться из закладки Parameters панели Properties прямо в процессе редактирования *.fla-файла.

В качестве учебного примера давайте создадим прямоугольник, которому можно скруглять углы.

Как объявить компонент

Что же нужно сделать, чтобы превратить наш клип-класс в компонент?

Достаточно задать хотя бы один параметр, указать custom user interface или live preview (об этом см. ниже) в пункте Component Definition контекстного меню символа библиотеки. Заметьте, что ни параметры, ни custom user interface, ни live preview не являются для символа обязательными.

После этого пиктограмма символа изменится на пиктограмму компонента, а при использовании компонента на сцене в панельке Properties появляется вторая закладка - Parameters.

Как сконфигурировать параметры

Рассмотрим детальнее, как сконфигурировать параметры, которые будут у компонента.

Мы хотим задать нашему компоненту Rectangle три параметра: длину, ширину и радиус скругления углов. Открываем пункт Component Definition из контекстного меню символа Rectangle и создаем три параметра.


Здесь нужно указать названия параметров (именно эти имена будут отображаться в панели Parameters ), имена полей, соответствующих параметрам, значения по умолчанию и тип, который нужно выбрать из выпадающего списка. В нашем случае все три параметра ( width, height и roundRadius ) будут типа Number.

Если вам понадобятся другие типы параметров, вы всегда сможете выбрать из имеющегося многообразия ( Default, Array, Object, List, String, Number, Boolean, Font Name, Color ). Для всех стандартных типов параметров существуют удобные контролы редактирования значения (которыми можно пользоваться, если вы не используете custom user interface ).

После того как вы задали параметры компоненту, они появляются на закладке Parameters панели Properties для любого экземпляра компонента.

Важно понимать, что значения параметров, заданные для каждого экзмепляра компонента, сохраняются где-то во внутренних структурах во .fla-файле.

Но, разумеется, нашей целью является не просто сохранить параметры компонента ; эти параметры еще и должны быть доступны в runtime. И они будут там доступны - просто как поля клипа, из которого мы сделали компонент. Как они попадают в клип? Оказывается, для каждого компонента Флэш МХ генерирует дополнительный код, который просто присваивает соответствующим полям нужные значения (этот код можно обнаружить, запустив ролик с компонентом под отладчиком). В нашем случае этот код будет выглядеть так:

onClipEvent (initialize) {
    width = 100;
    height = 35;
    roundRadius = 3;
}

Этот код будет выполнен при создании экземпляра данного клипа. Если клип зарегистрирован как объект какого-либо класса, то к моменту вызова конструктора все уже будет готово и параметрами компонента в конструкторе можно пользоваться.

Но если параметры устанавливаются таким простым способом, обязательно ли задавать фиксированный набор параметров каждому экземпляру данного символа? Действительно, это необязательно. Если в диалоге определения компонента вы снимете флажок " Parameters are locked in instances ", то, устанавливая параметры каждого конкретного экземпляра, вы сможете также удалять старые параметры или добавлять новые.