Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Установка активного кадра стека




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

В отладчике имеется весьма эффективная команда setFrame, позволяющая возвращаться обратно по сценарию в режиме его прерывания. Её синтаксис следующий: setFrame <целое число>

В этой команде указанный кадр стека задается в качестве активного. Если ввести команду setFrame в командной строке отладчика, точка выполнения сценария сместится к предыдущему коду. Нетрудно заметить, что после того как будет задан активный кадр стека, переменные из кадра стека с меньшим номером окажутся вне заданной области действия, тогда как переменные из нового кадра стека окажутся в этой области действия.

Так, если выполнение сценария остановлено в точке, находящейся на глубине трех вызовов функций, и при этом требуется запросить значение локальной переменной, которая установлена в первой функции, достаточно вернуться к данной функции, просмотреть ее значение и возобновить выполнение сценария в отладчике.

В следующем упражнении приведен пример задания активного кадра стека.

1. Установите 3dsMax в исходное состояние и откройте новое окно редактора MAXScript Editor.

2. Введите и сохраните следующий сценарий:

function terrier c = (

d = 2 * с

break()


Приложение

return d

)

function dog b =

(

tr = 2 * terrier b

)

function quadroPed a =

(

dg = 2 * dog a

)

function mammal =

(

h = [1,2,3]

qp = quadroPed h

)

mammal()

Вычислите сценарий.

Откроется окно отладчика, а в окне вывода из отладчика появится отладочная информация.

Откройте окно Watch Manager и введите все переменные и параметры, используемые в сценарии:

 

 


В данный момент определены только переменные сиd. Введите в командной строке отладчика следующую команду: setFrame 1

Содержимое окна Watch Manager обновляется и в нем отображаются переменные b и tr, а переменные сиd обозначаются как необъявленные (Undeclared), поскольку они оказываются вне данной области действия.


Приложение

Если требуется, вы можете изменить значение переменной b в окне Watch Manager, но с определенными ограничениями. В частности, переменной b можно присвоить значение типа integerили float.

А вот значения типа Point3 нельзя изменить в окне Watch Manager. Если изменить значение переменной b в окне Watch Manager, а затем возобновить выполнение сценария, новое значение этой переменной не будет передано функции terrier. Вместо него будет использовано старое значение, т.е. [1,2,3].

Для того чтобы изменить значение типа Point3 переменной b, необходимо ввести команду eval в командной строке отладчика: eval <выражение MAXScript>

6. Введите в командной строке отладчика следующую команду и нажмите клавишу <Enter>:

eval b = [1,1,3]

Обратите внимание на обновление содержимого окна Watch Manager и окна вывода из отладчика. В них появилось новое значение [1,1,3] переменной b. Если возобновить выполнение сценария, выбрав кнопку Run, старое значение переменной b будет по-прежнему передаваться функции terrier, поскольку в этой функции все еще используется старое значение переменной c. Тем не менее с помощью команды eval можно вычислять отдельные части сценария.

7. Введите в командной строке отладчика следующую команду и нажмите клавишу <Enter>:

eval tr = 2 * terrier b

Вновь обратите внимание на обновление содержимого окна Watch Manager и окна вывода из отладчика. В них появилось новое значение [4,4,12] переменной tr.

Тем не менее это значение переменной tr остается временным. Если щелкнуть на кнопке Run, чтобы завершить сценарий, функция mammal будет по-прежнему возвращать устанавливаемое по умолчанию значение [8,16,24].

Дополнительные сведения об отладчике приведены в следующих разделах справочного руководства по MAXScript.

• MAXScript Debugger ⇨ The MAXScript Debugger

• MAXScript Debuggen ⇨ Using the MAXScript Debugger




Поделиться с друзьями:


Дата добавления: 2014-10-15; Просмотров: 511; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.009 сек.