{{indexmenu_n>5}} =====Специальные синхронизируемые функции языка===== Большинство синхронизируемых функций 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 с указанием параметром номера записи. Номер записи может быть получен с помощью сайта (см. рис).\\ {{:jazyk:6_window.png}} Если ссылка на запись уже получена, можно вызвать глобальный метод teleportToRecord, указав первым параметром ресурс записи, а вторым булевый флаг присоединения к просмотру записи. Если кто-то уже просматривает эту запись и флаг присоединения к просмотру записи выставлен в true, при переходе пользователь присоединиться к просмотру записи. //Внимание!// Пользователь, для которого выполнится фрагмент программы, использующий teleportToRecord, будет перемещен в просмотр записи и исчезновение пользователя заметят другие пользователи, однако никто другой в эту запись перенесен не будет (если только каким-либо образом и для других пользователей сработает вызов teleportToRecord). //Переход в «Мой дом» определенного пользователя//\\ Ссылка на соответствующий «Мой дом» должна быть получена в начале работы программы с помощью глобальной функции getHome с указанием параметром логина владельца «Моего дома». Для непосредственного перехода вызывается функция teleportToHome, принимающая параметром заранее полученный серверный объект «Моего дома». //Внимание!// Пользователь, для которого выполнится фрагмент программы, использующий teleportToHome, будет перемещен в просмотр записи и исчезновение пользователя заметят другие пользователи, однако никто другой в эту запись перенесен не будет. var obj = scene.getObjectByName(“Кубик"); scene.petyaHouse = getHome(“petya_78”); obj.onPress = function() { teleportToHome(scene.petyaHouse); }