aframe
система
Поиск…
Вступление
Система, структура системы-компонента-системы, предоставляет глобальные возможности, службы и управление классам компонентов. Он предоставляет общедоступные API (методы и свойства) для классов компонентов. Доступ к системе возможен через элемент сцены и может помочь компонентам взаимодействовать с глобальной сценой.
Например, система камеры управляет всеми объектами с компонентом камеры, контролируя, какая камера является активной камерой.
параметры
параметр | подробности |
---|---|
данные | Данные, предоставленные схемой, доступные через обработчики и методы |
эль | Ссылка на <a-scene> |
схема | Работает так же, как и схемы компонентов. Парсы к данным. |
замечания
МЕТОДЫ
Система, как компонент, определяет обработчики жизненного цикла. Он также может определять методы, предназначенные для публичного API.
метод | Описание |
---|---|
в этом | Вызывается один раз, когда система инициализируется. Используется для инициализации. |
Пауза | Вызывается, когда сцена останавливается. Используется для остановки динамического поведения. |
играть | Вызывается, когда сцена начинается или возобновляется. Используется для запуска динамического поведения. |
поставить галочку | Если определено, будет вызываться на каждом тике цикла рендеринга сцены. |
Регистрация системы
Система зарегистрирована аналогично компоненту A-Frame.
Если имя системы совпадает с именем компонента, то компонент будет иметь ссылку на систему как this.system:
AFRAME.registerSystem('my-component', {
schema: {}, // System schema. Parses into `this.data`.
init: function () {
// Called on scene initialization.
},
// Other handlers and methods.
});
AFRAME.registerComponent('my-component', {
init: function () {
console.log(this.system);
}
});
Доступ к системе
Доступ к инстанцированной системе можно получить через сцену:
document.querySelector('a-scene').systems[systemName];
Прототипы зарегистрированных систем можно получить через AFRAME.systems
.
Разделение логики и данных
Системы могут помочь отделить логику и поведение от данных, если это необходимо. Мы позволяем системам обрабатывать тяжелый подъем, а компоненты беспокоятся только об управлении своими данными с помощью своих методов жизненного цикла:
AFRAME.registerSystem('my-component', {
createComplexObject: function (data) {
// Do calculations and stuff with data.
return new ComplexObject(data);
}
});
AFRAME.registerComponent('my-component', {
init: function () {
this.myObject = null;
},
update: function () {
// Do stuff with `this.data`.
this.myObject = this.system.createComplexObject(this.data);
}
});
Сбор всех компонентов системы
Существует строгий API для определения того, как системы управляют компонентами. Общая схема состоит в том, чтобы компоненты подписались на систему. Затем система имеет ссылки на все ее компоненты:
AFRAME.registerSystem('my-component', {
init: function () {
this.entities = [];
},
registerMe: function (el) {
this.entities.push(el);
},
unregisterMe: function (el) {
var index = this.entities.indexOf(el);
this.entities.splice(index, 1);
}
});
AFRAME.registerComponent('my-component', {
init: function () {
this.system.registerMe(this.el);
},
remove: function () {
this.system.unregisterMe(this.el);
}
});