Создание динамических объектов – события, маршруты, сенсоры и интерполяторы

Создание динамических объектов – события, маршруты, сенсоры и интерполяторы

4.1. События.

Также, как имена полей, многие узлы содержат имена событий (events).

Существует два типа событий – eventIn и eventOut.

События eventOut – выходящие события, которые генерируют информацию (например, изменение значения или время щелчка мыши).

События eventIn – входящие события, которые принимают информацию из узла снаружи и что-то делают с ними.

Каждое событие имеет  тип, связанный с ним (описано выше).

Некоторые узлы содержат поля, которые являются выделенными (exposed field). Это означает, что узел имеет два события, определённых для этого поля – set_fieldname и fieldname_changed. Эти события являются событиями  eventIn и eventOut для поля, которые могут быть использованы для установки значения и сообщения миру снаружи о том, когда он был изменён.

Если использовать set_fieldname для установки значения поля, узел генерирует событие fieldname_changed. Для простоты использования  set_ и _changed части названий событий могут быть отброшены и браузер сам решит, какое событие использовать. Если поле не является выделенным, оно не может быть изменено событием, и его значение в файле – это значение, которое будет использоваться для него всё время. Для просмотра, какие поля являются выделенными, следует обратиться к описанию синтаксиса узлов.

 

4.2. Маршруты.

Для того, чтобы делать какие-то полезные действия с событиями, необходимо их связать между собой. Эта связь определяется как ROUTE (маршрут). Например, для связи touchTime eventOut с startTime eventIn (например, для проигрывания звука по щелчку мыши), мы направили бы событие следующим образом:

 

 

 

ROUTE SENSOR.touchTime TO SOUND.startTime

 

Эта часть кода направляет событие touchTime из узла TouchSensor (о нём рассказывается далее) в событие startTime в узле Sound. Когда TouchSensor нажат, звук начинает играть. Здесь необходимо использовать определение DEF для каждого узла, чтобы была возможность связать их (у каждого узла должно быть своё индивидуальное имя).

Сначала определяем узлы TouchSensor и Sound (с полями внутри них):

 

DEF SENSOR TouchSensor {

}

DEF SOUND Sound {

}

 

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

 

4.3. Сенсоры (датчики) – генераторы событий.

 

4.3.1. SphereSensor (Сферический датчик).

Синтаксис узла:

SphereSensor {

exposedField    SFBool          autoOffset              TRUE

exposedField    SFBool          enabled                 TRUE

exposedField    SFRotation      offset                  0 1 0 0

eventOut        SFBool          isActive

eventOut        SFRotation      rotation_changed

eventOut       

Комментарии к записи Создание динамических объектов – события, маршруты, сенсоры и интерполяторы отключены

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

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