Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
MAXScript Part 9.doc
Скачиваний:
2
Добавлен:
01.03.2025
Размер:
136.19 Кб
Скачать

Пункт меню

Меню состоит из пунктов. Каждый пункт должен быть определен следующим образом

menuItem Имя_переменной Текстовая_строка

checked:Логическое_выражение enabled:Логическое_выражение

filter:Функция

Обязательны только первые два параметра. Первый – имя переменной, которая после определения будет содержать ссылку на созданный пункт меню. Второй – текстовая строка, которая будет выводиться в меню. Параметр checked позволяет установить (значение true) или не устанавливать (false) галочку напротив определяемого пункта меню. Возможность доступа к пункту меню определяется параметром enabled. Значение true соответствует разрешенному пункту, false – недоступному. Последний параметр, filter, должен быть ссылкой на функцию без параметров, которая будет автоматически вызываться при открытии меню. Если она возвращает true, пункт добавляется к меню, в противном случае – нет.

Пункт меню, как и всякий объект имеет свойства. Текст пункта доступен через свойство

Пункт_меню.text

Наличие флажка возле пункта определяется свойством

Пункт_меню.checked

а за возможность пункта отвечает свойство

Пункт_меню.enabled

При выборе пользователем пункта меню генерируется событие

on Пункт_меню picked do

Разделитель

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

separator Имя_переменной filter:Функция

В первый параметр, как обычно заносится ссылка на созданный объект, а второй, необязательный, является функцией-фильтром. Его применение полностью аналогично работе с одноименным параметром для пункта меню.

Подменю

Подменю описывает новое меню, которое откроется, если Вы выберете некий пункт меню. Оно определяется следующим образом

subMenu Текстовая_строка filter:Функция

Первый параметр – текст пункта, при выборе которого раскроется подменю. Второй параметр необязателен и представляет собой уже знакомую нам функцию фильтр. После такого определения должно следовать тело подменю, которое состоит из пунктов, разделителей и новых подменю. Как видите, подменю является скорее синтаксическим объектом, поэтому в его определении нет даже переменной. В качестве примера можно привести определение меню, в котором есть и разделители и подменю.

rcmenu MyRCmenu

( -- Функции-фильтры

-- Наличие выделенных объектов

fn flt_objects = ($ != undefined)

-- Принадлежность выделенных объектов к классу фигур

fn flt_shapes = (isKindOf $ Shape)

-- Пункты меню

menuItem mi_cs "Cast Shadows" checked:false

menuItem mi_rs "Receive Shadows" checked:false

-- разделитель

separator sep2 filter:flt_objects

-- Подменю добавляется, если есть выделенные объекты

subMenu "Modifiers" filter:flt_objects

(

-- Пункты подменю для объектов

menuItem mi_bend "Bend"

menuItem mi_twist "Twist"

-- Разделитель и подменю только для фигур

separator sep3 filter:flt_shapes

subMenu "Shape" filter:flt_shapes

(

menuItem mi_extrude "Extrude"

menuItem mi_EditSpline "Edit Spline"

)

)

-- Здесь должны быть обработчики событий

)

registerRightClickMenu MyRcmenu -- Регистрация меню

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]