Включение и отключение элементов пользовательского интерфейса

Итак, сценарий работает, хотя он и недостаточно защищен от ошибок. В част­ности. кнопка 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

• Выбирать объекты на сцене из сценария

• Выбирать точки сцены из сценария

• Пользоваться инструментом отслеживания перемещений мыши

• Пользоваться интерфейсом раскраски