{{indexmenu_n>9}} =====Синхронизация произвольных событий и свойств===== Для работы синхронизации 3D-объекта необходимо обрабатывать три его события * onSynchReceived – пришли новые значения синхронизируемых переменных; * onSynchInitReceived – необходимо проверить, что ваши синхронизируемые переменные имеют какие-то определенные значения, а если нет, то проинициализировать их; * onSynchResetReceived – необходимо сбросить все ваши синхронизируемые переменные в значения по умолчанию. Значения синхронизируемых переменных устанавливаются как произвольные свойства подобъекта synch 3D-объекта, например: var obj1 = scene.getObjectByName("МойОбъект"); obj1.synch.myProperty = 10; Свойства должны устанавливаться простых типов (строка, число), не допустимы массивы, объекты типа Position3D и т.д. После их изменения приходит событие onSynchReceived, которое можно обработать, например, так: obj1. onSynchReceived = function() { if (Event.synched.myProperty) // если изменилось именно это свойство { this.ApplyMyPropertyValue(this.synch.myProperty); } } Инициализация может проходить следующим образом: obj1. onSynchInitReceived = function() { if (typeof( this.synch. myProperty) == "undefined" || this.synch. myProperty == null ) { this.synch. myProperty = 5; } } а обработка сброса следующим: obj1. onSynchResetReceived = function() { this.synch. myProperty = 5; } Ваши синхронизируемые свойства должны полностью описывать текущее состояние объекта в любой момент времени, поэтому они не должны использоваться для синхронизации действий. Например, вместо действия «перемещение из точки A в точку B» правильно завести состояние перемещения из точки А в точку B с определенным стартовым временем X и продолжительностью T. Для того, чтобы правильно оперировать со временем у любого 3D-объекта в подобъекте synch есть свойство serverTime, которое содержит время в миллисекундах, идущее одинаково на всех компьютерах посетителей виртуального мира. Таким образом, это время подходит для синхронизации длительных событий.