aframe
Sistema
Ricerca…
introduzione
Un sistema, del modello entità-componente-sistema, fornisce portata globale, servizi e gestione a classi di componenti. Fornisce API pubbliche (metodi e proprietà) per classi di componenti. È possibile accedere a un sistema attraverso l'elemento scene e aiutare i componenti ad interfacciarsi con la scena globale.
Ad esempio, il sistema di telecamere gestisce tutte le entità con il componente della telecamera, controllando quale telecamera è la telecamera attiva.
Parametri
Parametro | Dettagli |
---|---|
dati | Dati forniti dallo schema disponibili tra gestori e metodi |
EL | Riferimento a <a-scene> |
schema | Si comporta allo stesso modo degli schemi di componenti. Analizza i dati. |
Osservazioni
METODI
Un sistema, come un componente, definisce i gestori del ciclo di vita. Può anche definire metodi intesi come API pubblica.
Metodo | Descrizione |
---|---|
dentro | Chiamato una volta quando il sistema è inizializzato. Utilizzato per inizializzare. |
pausa | Chiamato quando la scena si interrompe. Usato per fermare il comportamento dinamico. |
giocare | Chiamato quando la scena inizia o riprende. Utilizzato per avviare un comportamento dinamico. |
zecca | Se definito, verrà richiamato su ogni tacca del ciclo di rendering della scena. |
Registrazione di un sistema
Un sistema è registrato in modo simile a un componente A-Frame.
Se il nome del sistema corrisponde a un nome componente, il componente avrà un riferimento al sistema come 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);
}
});
Accesso a un sistema
Un sistema istanziato è accessibile attraverso la scena:
document.querySelector('a-scene').systems[systemName];
È possibile accedere ai prototipi di sistema registrati tramite AFRAME.systems
.
Separazione di logica e dati
I sistemi possono aiutare a separare la logica e il comportamento dai dati, se desiderato. Lasciamo che i sistemi gestiscano il sollevamento pesante ei componenti si preoccupano solo di gestire i dati attraverso i suoi metodi del ciclo di vita:
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);
}
});
Raccolta di tutti i componenti di un sistema
Non esiste un'API rigorosa per definire come i sistemi gestiscono i componenti. Un modello comune prevede che componenti si iscrivano al sistema. Il sistema ha quindi riferimenti a tutti i suoi componenti:
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);
}
});