VRML-скрипты

VRML-скрипты

 

  1. 7.     Сценарии

 

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

 

7.1. Узел Script

 

Узел сценариев является, быть может, самым важным из нововведений в VRML97 по сравнению со спецификацией VRML 1.0. Он наделяет ранее статичные миры практически неограниченным набором возможностей. В сущности, узел Script позволяет автору создавать свои собственные узлы с полями, входящими и исходящими событиями. Синтаксис узла Script таков:

Script {

exposedField MFString url     [ ]

field        SFBool directOutput FALSE

field        SFBool mustEvaluate FALSE

# And any number of:

eventIn     eventType eventName

field         fieldType fieldName initialValue

eventOut  eventType eventName

}

Итак, все сценарии имеют три общих основных поля – url, directOutput и mustEvaluate. Кроме того, они могут иметь любое число определенных пользователем полей, входящих и исходящих событий. Их определение весьма напоминает декларирование прототипа в утверждении PROTO. А именно они определяются при помощи ключевых слов field (поле),  eventIn (входящее событие) и eventOut (исходящее событие). Конкретный набор зависит от вашего желания. После ключевого слова определяется тип поля (события), например SFFloat, далее идет его название. В случае полей нужно также указать то значение, которое будет использоваться по умолчанию. Например:

Script {

eventIn SFBool input

field SFBool boolValue TRUE

eventOut SFBool output

url “filter.js”

}

В приведенном выше примере мы имеем по одному типу поля/события каждого вида. Там есть входящее событие input, исходящее событие output и одно поле с названием boolValue и значением по умолчанию TRUE. Указано также, что код сценария может быть найден в файле ” filter.js “.

Нужно отметить, что узел Script не может иметь открытых (exposed) полей.

 

7.2. Языки программирования

 

Сценарии в VRML можно определить одним из трех способов. Во-первых, можно использовать откомпилированный Java-код из файла с расширением .class, указанного в поле url. Во-вторых, можно использовать код на JavaScript из внешнего файла с расширением .js. Ну и в-третьих, можно включать код на языке JavaScript непосредственно в поле url. Последнее делается так:

url “javascript:

function input(value, time) {

if (value==boolValue) output = value;

}

Итак, встроенный код включается в файл при помощи ссылки “javascript:”, сопровождаемой непосредственно кодом. Это очень удобно для коротких кусочков кода или же кода, только единожды встречающегося на протяжение всего мира. Если один и тот же фрагмент кода используется в нескольких сценариях, разумнее поместить его в отдельный файл.

Кстати, в поле url возможно сочетание ссылки на сценарий со встроенным кодом:

Script {

url [“http://foo.com/myScript.js”,

“javascript:

Комментарии к записи VRML-скрипты отключены

Рубрика: Программирование

Обсуждение закрыто.