КАТЕГОРИИ: Архитектура-(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; Просмотров: 540; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |