
- •С чего начать
- •Переменные и присвоение им значений
- •Области видимости
- •Настойчивые переменные
- •Изменяемый тип переменных
- •Присвоение значения по ссылке
- •Выделение памяти и уборка мусора
- •Имена переменных
- •Литералы
- •Числовые литералы
- •Строковые литералы
- •Литералы времени
- •Литералы имен объектов
- •Литералы точек в двумерном и трехмерном пространстве
- •Литералы массивов
- •Выражения
- •Простые выражения
- •Математические выражения
- •Порядок выполнения операций в математических выражениях
- •Полиморфизм
- •Выражения сравнения
- •Логические операции
- •Сокращенное выполнение логических выражений
- •Позиционированные и именованные параметры
- •Приоритет вызова функций
- •Написание вызова функции в несколько строк
- •Другой способ вызова функций
- •Контекстные выражения
- •Комментарии
- •Обращение из одного скрипта к другим
- •Управление порядком выполнения операторов
- •Пропуск выполнения цикла
- •Собственная обработка ошибок
- •Оформление функций
- •Переменная, содержащая функцию
- •Параметры функций
- •Принудительное завершение функции
- •Определение структур
- •Создание функций, локальных внутри структуры
- •Базовые классы maxScript Класс Value
- •Операторы
- •Литералы
- •Операторы
- •Свойства
- •Операторы
- •Точка в трехмерном пространстве
- •Литералы
- •Конструкторы
- •Свойства
- •Операторы
- •Литерал
- •Конструкторы
- •Свойства
- •Произвольный поворот
- •Литералы
- •Конструкторы
- •Операторы
- •Свойства
- •Углы Эйлера
- •Операторы
- •Свойства
- •Прямоугольник
- •Литералы
- •Конструкторы
- •Свойства
- •Операторы
- •Функция
- •Массив_чисел
- •Вспомогательные методы Функция
- •Функция
- •Можно открыть зашифрованный файл, используя функцию
- •Свойства
- •Свойства
- •Особенности работы с ключами анимации
- •Массив параметров
- •Конструкторы
- •Свойства
- •Операторы
- •Множества
- •Шаблонные группы
- •Свойства
- •Операторы
- •Функции для работы с группами
- •Наборы объектов
- •Конструкторы
- •Свойства
- •Операторы
- •Функции, работающие с наборами
- •Дополнительные сведения
- •Конструкторы
- •Свойства
- •Операторы
- •Прочие функции
- •Операторы
- •Конструкторы
- •Свойства
- •Операторы
- •Конструкторы
- •Свойства
- •Операторы
- •Конструкторы
- •Свойства
- •Операторы
- •Литералы
- •Свойства
- •Операторы
- •Конструкторы
- •Свойства
- •Операторы
- •Конструкторы
- •Свойства
- •Операторы
- •Прочие функции
- •Скрипт-утилиты
- •Панель скрипт-утилиты
- •Составные части тела свитка
- •Создание перемещаемых окон
- •Видимость локальных переменных, структур, функций и компонент интерфейса из кода свитка
- •Доступ к локальным переменным и прочим элементам утилит и свитков из внешнего кода
- •Компоненты пользовательского интерфейса
- •Название_компонента Имя_переменной Символьная_строка
- •Общие свойства компонентов пользовательского интерфейса
- •Общие параметры компонентов пользовательского интерфейса
- •Типы компонентов пользовательского интерфейса Для примера рассмотрим утилиту, использующую все возможные компоненты пользовательского интерфейса
- •Битовая карта
- •Параметры
- •Свойства
- •События
- •Параметры
- •Параметры
- •Свойства
- •События
- •Параметры
- •Свойства
- •События
- •Выпадающий список
- •Параметры
- •Свойства
- •События
- •Свойства
- •События
- •Кнопка выбора текстурной карты
- •Параметры
- •Свойства
- •События
- •Кнопка выбора материала
- •Параметры
- •Свойства
- •События
- •Список с возможностью множественного выбора
- •Параметры
- •Свойства
- •События
- •Кнопка выбора объекта
- •Параметры
- •Свойства
- •События
- •Задатчик
- •Параметры
- •Свойства
- •События
- •Параметры
- •Свойства
- •События
- •Кнопки с картинками
- •Скрипт контекстного меню
- •Тело контекстного меню
- •Пункт меню
- •Разделитель
- •Подменю
- •Макро скрипты
- •Создание файлов с иконками
- •Средства работы с мышью
- •Остановить работу средства можно вызовом функции
- •Правила оформления средств работы с мышью
- •События
- •Скрипт плугины
- •Правила построения скрипт-плугина
- •Внесение изменений в плугин
- •Урок 1. Твердые тела
- •Создание набора твердых тел
- •Добавление тел к набору
Скрипт контекстного меню
MAXScript предоставляет ряд средств для того, чтобы создавать меню, которые будут появляться в произвольном месте экрана, чаще всего при нажатии правой кнопки мышки. Данное средство не дает возможности использовать компонентов пользовательского интерфейса, но Вы можете при выборе пункта меню открыть перемещаемое окно, на котором размещены нужные Вам компоненты.
Определение контекстного меню осуществляется с помощью следующей конструкции
rcmenu Переменная
Далее должно идти тело определения меню, структуру которого рассмотрим далее. В указанную переменную помещается ссылка на вновь созданное меню. Следующие методы позволяют зарегистрировать меню и наоборот разрегестрировать.
registerRightClickMenu Контекстное_меню
регистрирует указанное меню
unRegisterRightClickMenu Контекстное_меню
разрегистрирует, а
unRegisterAllRightClickMenus ( )
разрегистрирует все ранее зарегистрированные меню.
Например, следующий скрипт добавляет два следующих пункта в контекстное меню – Cast Shadows и Receive Shadows
rcmenu MyRCmenu
(
menuItem mi_cs "Cast Shadows" checked:false
menuItem mi_rs "Receive Shadows" checked:false
--
on MyRCmenu open do
(
local sel = (selection.count == 1)
-- Включается только если выбран один объект
mi_cs.enabled = mi_rs.enabled = sel
-- Установка флажков у пунктов меню
if sel do
(
mi_cs.checked = $.castShadows
mi_rs.checked = $.receiveShadows
)
)
-- Обработчики событий выбора пунктов меню
on mi_cs picked do $.castShadows = (not $.castShadows)
on mi_rs picked do $.receiveShadows = (not $.receiveShadows)
)
-- Регистрация меню
registerRightClickMenu MyRCmenu
Можно зарегистрировать сколько угодно меню. Если зарегистрировано меню с уже зарегистрированным именем, то новое меню перепишет старое. Каждое меню может быть выведено на экран с помощью метода
popUpMenu Контекстное_меню pos: Точка_в_2D_пространстве
rollout: Свиток allign: Имя
Первый параметр задает выводимое меню. Прочие параметры необязательны. Координаты меню на экране задаются параметры pos. Если местоположение меню должно быть привязано к свитку, то этот свиток должен быть задан с помощью параметра rollout. Если параметр pos не задан, то меню выводится рядом с курсором мыши. Способ выравнивания по курсору определяется параметром align, который может иметь следующие значения.
#align_topleft
#align_topcenter
#align_topright
#align_bottomleft
#align_bottomcenter
#align_bottomright
#align_vcenterleft
#align_vcentercenter
#align_vcenterright
Тело контекстного меню
Тело контекстного меню строится точно так же, как и тело свитка. Локальные переменные, функции и структуры могут определяться внутри него. Доступ из внешнего кода к ним осуществляется так же, как и к переменным определенным внутри свитка. У контекстного меню есть свои элементы интерфейса – пункт, подменю и разделитель. Для них, как и для компонентов, размещаемых на свитке, определяются функции обработчики. Само меню может генерировать только одно событие. Оно происходит, когда меню открывается первый раз, а функция обработчик для него определяется так
on Контекстное_меню open do
Компоненты меню