Образовательный виртуальный мир vAcademia

Инструменты пользователя

Инструменты сайта


Боковая панель

Специальные синхронизируемые функции языка

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

Управление видимостью
Для управления видимостью служит метод 3D-объекта setVisible, принимающий параметром булевскую переменную (должен быть виден 3D-объект или нет).

Проигрывание звука
Могут быть проиграны любые звуки в формате wav или mp3, предварительно загруженные в коллекцию ресурсов. Для того, чтобы получить ссылку на необходимый звуковой ресурс необходимо вначале программы вызвать глобальную функцию getServerResource, указав параметром название файла в коллекции ресурсов. Ссылка должна быть сохранена в глобальный объект scene для дальнейшего использования. Ссылка должна быть получена в начале программы для организации эффективного клиент-серверного взаимодействия, возможности предварительно закешировать звук до непосредственного его проигрывания.

Если ссылка на звуковой ресурс уже получена, проиграть его можно вызвав метод 3D-объекта playMusic, указав первым параметром звуковой ресурс, а вторым параметром громкость звука в процентах. Ниже приведен пример проигрывания звука по клику на объект.

var obj1 = scene.getObjectByName("МойОбъект");
scene.myRes = getServerResource("mmlab_cd4.mp3");
obj1.onPress = function()
{
  this.playMusic(scene.myRes, 100);
}
!!!Важное замечание
Использование getServerResource источник потенциальных ошибок,
т.к. чтобы одна vJS-программа не сломала другую необходимо,
чтобы имена всех используемых всеми пользователями ресурсов
были уникальными, а этого невозможно достичь. Поэтому рекомендуется
использовать вместо getServerResource функцию getServerResourceByUser,
которая принимает первым параметром имя ресурса в коллекции ресурсов,
а вторым параметром – логин пользователя-владельца коллекции ресурсов.

Замена текстуры на 3D-объекте
Для замены могут быть использованы текстуры в формате PNG или JPEG, предварительно загруженные в коллекцию ресурсов. Ссылка на текстуру получается предварительно с помощью getServerResource аналогично со звуковым ресурсом. Если ссылка на текстуру уже получена, можно вызвать метод 3D-объекта replaceTexture, указав вторым параметром текстуру, а первым параметром номер материала в 3D-объекте для замены (номера начинаются с 0).

Переход в просмотр записи
Ссылка на 3D-запись должна быть получена в начале работы программы с помощью глобальной функции getRecord с указанием параметром номера записи. Номер записи может быть получен с помощью сайта (см. рис).

Если ссылка на запись уже получена, можно вызвать глобальный метод teleportToRecord, указав первым параметром ресурс записи, а вторым булевый флаг присоединения к просмотру записи. Если кто-то уже просматривает эту запись и флаг присоединения к просмотру записи выставлен в true, при переходе пользователь присоединиться к просмотру записи.

Внимание! Пользователь, для которого выполнится фрагмент программы, использующий teleportToRecord, будет перемещен в просмотр записи и исчезновение пользователя заметят другие пользователи, однако никто другой в эту запись перенесен не будет (если только каким-либо образом и для других пользователей сработает вызов teleportToRecord).

Переход в «Мой дом» определенного пользователя
Ссылка на соответствующий «Мой дом» должна быть получена в начале работы программы с помощью глобальной функции getHome с указанием параметром логина владельца «Моего дома». Для непосредственного перехода вызывается функция teleportToHome, принимающая параметром заранее полученный серверный объект «Моего дома».

Внимание! Пользователь, для которого выполнится фрагмент программы, использующий teleportToHome, будет перемещен в просмотр записи и исчезновение пользователя заметят другие пользователи, однако никто другой в эту запись перенесен не будет.

var obj = scene.getObjectByName(“Кубик");
scene.petyaHouse = getHome(“petya_78”);
obj.onPress = function()
{
  teleportToHome(scene.petyaHouse);
} 
jazyk/special_2.txt · Последние изменения: 2023/05/08 17:44 (внешнее изменение)