Составные части тела утилиты
Учебные материалы


Составные части тела утилиты



Карта сайта spinninglineboats.ru

· Определение локальных переменных, функций и структур;

· Определение компонентов пользовательского интерфейса;

· Определение функций-обработчиков событий компонентов пользовательского интерфейса.

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

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, если только не будет определена новая утилита с тем же именем. Время жизни свитков, определенных вне тела утилиты, зависит от того, в каком контексте они определены. Для большей информации на эту тему, смотрите главу об областях видимости объектов.



edu 2018 год. Все права принадлежат их авторам! Главная