Включение и отключение элементов пользовательского интерфейса
Итак, сценарий работает, хотя он и недостаточно защищен от ошибок. В частности. кнопка CreatePlanets оказывается доступной даже в тот момент, когда пользователь еще не создал Солнце. Всякая попытка создать планеты до Солнца может привести к ошибке.
Во избежание пользовательских ошибок отдельные элементы интерфейса включаются и отключаются в зависимости от конкретных действий пользователя в интерфейсе. Например, при открытии диалогового окна SolarSystem можно отключить все кнопки и счетчики до тех пор, пока пользователь не создаст Солнце.
1. Введите во всех строках, определяющих счетчики и кнопки, кроме первых двух, следующую строку кода:
enabled: false
Измененный фрагмент кода сценария должен теперь выглядеть следующим образом:
(
spinner spn_sunRadius "Sun Radius "
button but_createSun "Create Sun"
spinner spn_NumPlanets "Number of Planets " type: #integer \
range:[1,10,3] enabled: false
button but_createPlanets "Create Planets" enabled: false
group "Planets"
(
pickbutton pbt_pickPlanet "Pick Planet" autoDisplay: true \
enabled: false
spinner spn_planetRadius "Planet Radius " enabled: false spinner spn_orbitRadius "Orbit Radius " range:[0,100,0] \
enabled: false
)
При вычислении кода сценария в диалоговом окне становятся доступными лишь два первых элемента пользовательского интерфейса. Остальные элементы будут активизированы в обработчиках событий.
Глава 2
2. Введите следующий фрагмент кода внутри обработчика ссюытии but_createSun для отображения элементов пользовательского интерфейса, предназначенных для создания планет:
spn_numPlanets.enabled = true
but_createPlanets.enabled = true
Оба элемента пользовательского интерфейса становятся доступными после того, как пользователь создаст Солнце того или иного типа.
3. Введите следующий фрагмент кода внутри обработчика событий but_createPlanets, но непременно вне цикла for, т.е. до или после него:
pbt_pickPlanet.enabled = true
spn_planetRadius.enabled = true
spn_orbitRadius.enabled = true
4. Сохраните сценарий.
5. Установите 3dsMax в исходное состояние и очистите сцену.
6. Вычислите код сценария.
Сначала доступными оказываются лишь два первых элемента. После создания Солнца появляется возможность создать планеты и далее изменить радиус как отдельных планет, так и их орбит.
А теперь необходимо сделать еще одно, последнее изменение в сценарии, чтобы он стал еще более защищенным от ошибок. При выполнении данного сценария в первый раз значение параметра SunRadius устанавливается по умолчанию равным нулю. Если не изменить его, Солнце будет создано с нулевым радиусом. Нетрудно представить, как неопытный пользователь будет щелкать снова и снова на кнопке CreateSun, добиваясь того, чтобы Солнце появилось на сцене. В итоге сцена заполнится десятками невидимых Солнц, прежде чем пользователь поймет, в чем состоит ошибка.
Во избежание этого радиус сферы следует установить по умолчанию равным 50 или другому числовому значению, превышающему нуль.
7. Дополните строку кода, определяющую счетчик SunRadius, следующим кодом:
range: [1,100,50]
Эта строка должна теперь иметь следующий вид:
spinner spn_sunRadius "Sun Radius " range: [1,100,50]
8. Сохраните сценарий.
Вариант этого сценария можно найти в файле \chapter2\S0lar_System.ms на прилагаемом к этой книге CD-ROM.
Для усовершенствования данного сценария в него можно внести целый ряд дополнений. Например, пользователю можно разрешить следующее.
• Указывать начальные радиусы орбит с приращением вместо исходного значения 10. Для этого придется расширить диапазон значений параметра OrbitRadius в сторону больших чисел.
Построение пользовательских интерфейсов
• Наклонить каждую орбиту или сделать ее эллиптической. Для этого потребуются навыки выполнения преобразований, которые более подробно рассматриваются в главе 5.
Заключение
В этой главе вы научились строить пользовательские интерфейсы, создав свиток и заполнив его элементами пользовательского интерфейса, а затем введя в него обработчики событий для вызова отдельных частей сценария с помощью элементов управления пользовательского интерфейса. Кроме того, вы научились отличать общий сценарий от макросценария и создавать каждый из них в отдельности.
Интерфейс 3dsMaxГлава 3
Пользовательский интерфейс 3dsMax весьма обширен и сложен. Без MAXScript работа в данном приложении превращается в утомительное и довольно скучное занятие. Более того, художники, технические постановщики, аниматоры и целые студии, не имеющие в своем арсенале специальных сценариев, работают менее эффективно и медленно, а следовательно, гш труднее соперничать с теми, то создает и регулярно использует такие сценарии. |
Интерфейс 3dsMax
Задание
После изучения этой главы вы должны уметь следующее.
• Создавать копии, экземпляры и ссылки на геометрические объекты, находящиеся на сцене, и копировать массивы
• Пользоваться командами Max, доступными в 3dsMax
• Вызывать панели команд средствами MAXScript
• Получать доступ к основной панели инструментов средствами MAXScript
• Выбирать объекты на сцене из сценария
• Выбирать точки сцены из сценария
• Пользоваться инструментом отслеживания перемещений мыши
• Пользоваться интерфейсом раскраски