Читайте также: |
|
Тело утилиты может состоять из следующих элементов
· Определение локальных переменных, функций и структур;
· Определение компонентов пользовательского интерфейса;
· Определение функций-обработчиков событий компонентов пользовательского интерфейса.
Однако есть у утилит еще одна возможность. Среди компонентов можно определять собственные свитки, которые могут содержать свои компоненты, переменные, структуры и обработчики. Свиток определяется следующим образом
rollout Имя_переменной Символьная_строка
rolledUp: Логическое_выражение silentErrors: Логическое_выражение
Далее следует тело свитка, заключенное в скобки. Как нетрудно видеть, описание свитка полностью повторяет описание утилиты. На самом деле, все наоборот. Утилита фактически является частным случаем свитка, о чем и свидетельствует ее принадлежность к классу RolloutClass. Ключевое слово utility означает только то, что имя этого свитка должно появится в списке утилит и автоматическое создание кнопки Close. Разберем для примера утилиту, содержащую два вложенных свитка. Свитки можно определять и вне тела утилиты, например, для того, чтобы вывести этот свиток в окне. О том, как это делается, будет рассказано при описании правил создания перемещаемых окон.
utility MyUtil "My Utility"
(local pot
--- Свиток bout
rollout bout "About My Utility"
(button aboutMU "About" width:45 height:20
on aboutMU pressed do
messagebox "My First Utility\nby ME\nVersion.1" \
title:"About My Utility"
) --Конец определения свитка bout
--- Свиток creator
rollout creator "The Teapot"
(group "Object Creator"
(button tea "Teapot"
spinner rad "Radius" range:[10,50,20] type:#integer
spinner seg "Segments" range:[4,32,12] type:#integer scale:1
)
--- Обработчик нажатия кнопки tea
on tea pressed do
(pot=teapot radius:rad.value
pot.name="TestPot"
pot.segs=seg.value
) -- Конец обработчика нажатия кнопки tea
on rad changed value do
pot.radius=value
on seg changed value do
pot.segs=seg.value
) -- Конец определения свитка creator
-- Обработчики событий утилиты
-- Открытия
on MyUtil open do
(addRollout bout
addRollout creator
) -- Конец обработчика открытия утилиты MyUtil
-- Закрытия
on MyUtil close do
(removeRollout bout
removeRollout creator
) -- Конец обработчика закрытия утилиты MyUtil
)-- Конец определения утилиты MyUtil
Панель утилиты, определенной таким образом, приведена на рисунке
После того, как выполнился скрипт, определяющий утилиту, переменная, содержащая ссылку на нее (в приведенном примере переменная MyUtil) будет существовать весь сеанс работы с 3ds max, если только не будет определена новая утилита с тем же именем. Время жизни свитков, определенных вне тела утилиты, зависит от того, в каком контексте они определены. Для большей информации на эту тему, смотрите главу об областях видимости объектов.
Дата добавления: 2015-10-31; просмотров: 77 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Панель скрипт-утилиты | | | Составные части тела свитка |