Объявление и вызов процедур

Назначение кнопки Reset - это, очевидно, возвращение значений всех атрибутов, перечисленных в окне к значениям по умолчанию, которые мы сами и определим. Сделать это несложно, просто выполнив семь команд setAttr. Но для того, чтобы вызвать их одним махом, удобно объединить их в процедуру.

Добавьте к кнопке Reset вызов некоторой команды resetALL, а в самый низ скрипта добавьте следующие строки:

gridLayout -numberOfColumns 4 -cellWidthHeight 96 32; button -I “Reset” -w 94 -c "resetAU”; button -I “Save” -w 94; button -I "Load” -w 94;

button -I “Close” -w 94 -c “deleteUI DROP.WINDOW;” ; setParent

showWindow DROP_WINDOW; global proc resetAU ()

С

setAttr ‘‘pushField.magnitude” 39; setAttr "pushField.attenuation” 4; setAttr “pushField.maxDistance” 2; setAttr “pullField.magnitude” -6; setAttr "pullField.attenuation” 4; setAttr “pullField.maxDistance" 5; setAttr “dropShape.conserve” 0.9;

}

Выделив и выполнив весь скрипт, вы теперь можете смело «портить» значения всех атрибутов в окне, а затем нажать кнопку Reset и убедиться, что все атрибуты вернулись к исходным значениям.

Запоздалый совет. Чтобы не набивать вручную семь команд setAttr можно просто забить значения атрибутов в нашем окне, а потом посмотреть, что МАУА написала в Script Editor.

Конструкция global proc resetAU()

{

} '

объявляет процедуру resetAU.

Выполнение следующих строк

global proc resetAll()

{

setAttr “pushField.magnitude” 39; setAttr “pushField.attenuation” 4; setAttr "pushField.maxDistance” 2; setAttr "pullField.magnitude” -6; setAttr “pullField.attenuation” 4; setAttr "pullField.maxDistance” 5; setAttr “dropShape.conserve” 0.9;

}

не вызывает выполнения ни одной команды, а лишь производит объявление новой команды, которую затем можно вызывать, как все остальные стандартные команды (выделите и выполните эти строки и убедитесь, что ни один атрибут не изменяет своего значения).

Вызов объявленной процедуры (или команды, что пока одно и тоже) производится так же, как и для остальных команд - выделением ее имени и выполнением.

Можете убедиться в этом сами, выделив слово resetAU в Script Editor и нажав нужный Enter.

Разница между объявлением и выполнением Важно понимать разницу между объявлением и выполнением. Пока вы не объявите хотя бы один раз, например, процедуру resetAU, выполнив строки

global proc resetAll()

{

i"

MAYA каждый раз будет ругаться на попытку вызова команд resetAU, например, по нажатию кнопки

// Error: Cannot find procedure “resetAU”. //

Каждый раз когда MAYA встречает незнакомую ей команду, она в первую очередь проверяет таблицу объявленных пользователем процедур и если имя команды там отсутствует, MAYA начинает, как правило, ругаться.

Еще раз повторюсь, что процедура - удобный способ объединить большой набор команд в один блок, для того, чтобы вызывать его потом неоднократно. И прежде, чем вызвать процедуру, она должна быть обязательно объявлена. Чтобы изменить действие процедуры, достаточно ее отредактировать и переобъявить.

Работа с файлами. Чтение и запись


⇐ вернуться назад | | далее ⇒