aframe
System
Szukaj…
Wprowadzenie
System o strukturze encja-komponent-system zapewnia globalny zakres, usługi i zarządzanie klasami komponentów. Zapewnia publiczne interfejsy API (metody i właściwości) dla klas komponentów. Dostęp do systemu można uzyskać poprzez element sceny i może on pomóc komponentom połączyć się ze sceną globalną.
Na przykład system kamery zarządza wszystkimi elementami za pomocą komponentu kamery, kontrolując, która kamera jest aktywną kamerą.
Parametry
Parametr | Detale |
---|---|
dane | Dane dostarczane przez schemat dostępne dla różnych programów obsługi i metod |
el | Odniesienie do <a-scene> |
schemat | Zachowuje się tak samo jak schematy komponentów. Analizuje dane. |
Uwagi
METODY
System, podobnie jak komponent, definiuje procedury obsługi cyklu życia. Może także definiować metody, które mają być publicznym API.
metoda | Opis |
---|---|
w tym | Wywoływany raz podczas inicjalizacji systemu. Służy do inicjalizacji. |
pauza | Wywoływany, gdy scena się zatrzymuje. Służy do zatrzymania dynamicznego zachowania. |
grać | Wywoływany, gdy scena zaczyna się lub wznawia. Służy do uruchamiania zachowania dynamicznego. |
kleszcz | Jeśli zdefiniowano, będzie wywoływany przy każdym tiku pętli renderowania sceny. |
Rejestracja systemu
System jest rejestrowany podobnie do komponentu A-Frame.
Jeśli nazwa systemu jest zgodna z nazwą komponentu, wówczas komponent będzie miał odniesienie do systemu jako 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);
}
});
Dostęp do systemu
Do systemu instancji można uzyskać dostęp poprzez scenę:
document.querySelector('a-scene').systems[systemName];
Dostęp do zarejestrowanych prototypów systemu można uzyskać za pośrednictwem systemu AFRAME.systems
.
Rozdzielenie logiki i danych
Systemy mogą pomóc oddzielić logikę i zachowanie od danych w razie potrzeby. Pozwalamy systemom obsługiwać podnoszenie ciężarów, a komponenty martwią się o zarządzanie swoimi danymi poprzez swoje metody cyklu życia:
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);
}
});
Zebranie wszystkich komponentów systemu
Nie ma ścisłego interfejsu API do definiowania sposobu zarządzania komponentami przez systemy. Częstym wzorcem jest subskrypcja komponentów do systemu. Następnie system ma odniesienia do wszystkich swoich komponentów:
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);
}
});