АнимацияО мультфильмеМультипликация

Главная | iClone 3.1

Анимация поддерживает репутацию страны

Предыдущая Следующая

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

Код, генерирующий другой код

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

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

w=("Rollout w_rollout \"W\"\n")

Vf+=" (\n"

for i = 1 to selection. count do

(

w+="label label" + (i as string)+ " \" + (selection[i] .name as

^string) +"\"\n"

)

w+=")\n" execute vr

w_floater = newRolloutFloater "" 250 400 addRollout w_rollout w_floater

В итоге на перемещаемой панели появляется свиток, который содержит наименования всех четырех сфер. А теперь выполните этот код еще раз для 3, 10 или любого другого количества сфер. Этот код всегда формирует столько наименований, сколько выделено объектов.

Глава 22. Создание сценариев для специализированной анимации 719

Рассмотрим первую строку данного кода:

w = ("Rollout w_rollout \"W\"\n")

В связи с этим кодом прежде всего возникает следующий очевидный вопрос: что такое w? Это переменная? Нет, это строка. А строка (string) представляет собой набор символов, букв, чисел или прочих знаков. В качестве примера строки могут служить, оба следующих набора символов: "Hello" и "100". Таким образом, для создания строки достаточно заключить набор символов в кавычки. В приведенной строке кода создается строка под названием w. Эта строка подобна определению свитка, однако она содержит дополнительные знаки обратной косой черты и кавычек.

Рассмотрим подробнее строки 1 — 7 вышеприведенного кода. Первая строка кода начинается с выражения w =, а три другие строки — с выражения w+ =. К строке 8 кода из многих частей формируется длинная строка w. Для более тщательного анализа содержимого строки w введите строку кода print w перед строкой execute w. Выделите все четыре сферы, а затем выполните данный сценарий. В приемнике команд (Listener) появится следующее: "Rollout w_rollout "W" (

label labeil "Sphere02" label label2 "Sphere03" label labels "Sphere04" label label4 "SphereOl" )

А теперь можно приступать к анализу происходящего в данном сценарии. В строке 1 кода определяется строка w со следующим содержимым: "Rollout w_roDout "W". В строке 2 кода содержимое строки w дополняется открывающей скобкой. В строках 3 — 6 рассматриваемого кода осуществляется выбор наименований всех выделенных объектов в цикле for и поочередный ввод их в строку w. А в строке 7 кода содержимое строки w дополняется закрывающей скобкой. И в последней строке кода выполняется код, содержащийся в строке w. Этот код генерирует строку, содержащую другой код, выполняемый в ссютветствии с данным сценарием.

В рассмотренной выше строке w имеется ряд символических обозначений специальных знаков. Ниже приведены некоторые их примеры:

• \" означает размещение знака кавычки внутри строки.

• \п означает размещение знака перевода каретки внутри строки. Проанализируем строку 5 кода при значении i = 1:

w+ = "label label" + (i as string) + " \"" + (selection[i] .name as string) + "\"\n"

Эта строка кода означает следующее: добавить к содержимому строки w слова "label label", а затем номер 1 к полученной метке. В данном случае используется выражение i as string, поскольку переменная I на самом деле имеет числовое значение 1, которое требуется преобразовать в строку "1". Затем к содержимому строки w добавляется знак кавычки, наименование текущего выделенного объекта в виде строки, еще один знак кавычки и, наконец, знак перевода строки. В итоге формируется следующая строка:


Предыдущая Следующая
Форум
Союзмультфильм
Актеры кино
История жанра
Гифгалерея
Эмиль Рейно
Обратная связь