aframe
Tafereel
Zoeken…
Invoering
Een scène wordt vertegenwoordigd door het element <a-scene>
. De scène is het globale hoofdobject en alle entiteiten bevinden zich in de scène.
De scène neemt de klasse Entity over, dus neemt deze alle eigenschappen, methoden, de mogelijkheid om componenten te koppelen en het gedrag om te wachten op alle onderliggende knooppunten (bijvoorbeeld <a-assets>
en <a-entity>
) over. laden voordat de render-lus wordt gestart.
parameters
Parameter | Details |
---|---|
gedragingen | Matrix van componenten met tick-methoden die op elk frame worden uitgevoerd. |
camera | Actieve three.js camera. |
canvas | Verwijzing naar het canvas-element. |
isMobiel | Of de omgeving wordt gedetecteerd als mobiel. |
object3D | THREE.Scene-object. |
renderer | Actief THREE.WebGLRenderer. |
renderStarted | Of scène wordt weergegeven. |
effect | Renderer voor VR gemaakt door actieve renderer in THREE.VREffect door te geven. |
systemen | Instantiesystemen. |
tijd | Wereldwijde uptime van scène in seconden. |
Opmerkingen
METHODEN
Naam | Beschrijving |
---|---|
enterVR | Schakel over naar stereoweergave en duw inhoud naar de headset. Moet worden aangeroepen in een door de gebruiker gegenereerde gebeurtenishandler zoals click . de eerste keer dat een pagina VR binnenkomt. |
exitVR | Schakel over naar mono-renderer en stopt met het presenteren van inhoud op de headset. |
reload | Zet de scène terug in zijn oorspronkelijke staat. |
EVENEMENTEN
Naam | Beschrijving |
---|---|
enter-vr | Gebruiker is de VR ingegaan en de headset is begonnen met het presenteren van inhoud. |
exit-vr | De gebruiker is VR verlaten en de headset is gestopt met het presenteren van inhoud. |
loaded | Alle knooppunten zijn geladen. |
renderstart | Render-lus is gestart. |
Scènecomponenten aansluiten
Zowel componenten als entiteiten kunnen aan de scène worden gekoppeld. A-Frame wordt geleverd met een paar componenten om de scène te configureren:
bestanddeel | Details |
---|---|
ingebed | Verwijder stijlen op volledig scherm van het canvas. |
mist | Mist toevoegen. |
Toetsenbord sneltoetsen | Schakel sneltoetsen in. |
inspecteur | Injecteer de A-Frame Inspector. |
stats | Wissel prestatiestatistieken. |
vr-mode-ui | Schakel de gebruikersinterface in om VR in en uit te gaan. |
debug | Maakt serialisatie van componenten naar DOM mogelijk. |
Ingesloten scènes gebruiken
Als u WebVR-inhoud wilt gebruiken gemengd met HTML-inhoud, bijvoorbeeld wanneer u een uitgebreide showcase-inhoud maakt, kunt u de embedded
tag gebruiken. Wanneer u dit gebruikt, is het mogelijk om rond te kijken in 360 ° -inhoud met behulp van de gyroscoop van uw smartphone of klik en sleep op de computer.
<script src="https://aframe.io/releases/0.5.0/aframe.min.js"></script>
<div class="vrcontent">
<a-scene embedded>
<a-assets>
<img id="sky" src="https://c1.staticflickr.com/5/4248/34705881091_37b5cf2d28_o.jpg" alt="" />
</a-assets>
<a-sky src="#sky"></a-sky>
</a-scene>
</div>
<div class="overlay">
<button class="calltoaction">Click me!</button>
</div>
<div class="content">
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Deleniti animi aliquid architecto quibusdam ipsum, debitis dolor mollitia. Quidem, cumque quos porro doloribus iure dolore illum, qui rem asperiores unde laboriosam.Dolorum tempora quam eveniet ea recusandae deserunt, velit similique. Cum sunt rerum beatae officiis qui sed molestiae et ullam quasi, harum maxime vel, aspernatur quidem molestias. Provident quae illo harum?Sunt expedita, repellat saepe vel accusamus odio. Alias, obcaecati harum earum inventore asperiores quaerat, sit autem nostrum. Sunt illo numquam, temporibus pariatur optio nam, expedita necessitatibus aliquid nemo maxime nisi. Praesentium corporis, ea sunt asperiores, recusandae animi, rem doloribus, possimus cum laudantium libero. Maiores a, iusto aspernatur reiciendis ratione sunt nisi, rem, quasi temporibus ullam non. Neque repellat facilis illo.Quibusdam reiciendis sunt tempora fuga deleniti, molestias temporibus doloremque. Nam sed consequatur consectetur ut tempora a nesciunt, perspiciatis dolorem reprehenderit modi enim at veritatis, excepturi voluptate quod, voluptatibus voluptas. Cum.Debitis, nesciunt, repellat voluptatem sapiente incidunt quidem asperiores reprehenderit vero quisquam placeat sunt voluptatibus velit. Consectetur atque voluptates, repellendus facere sequi ea totam quia quis non incidunt. Soluta, aut, provident. Eos sequi itaque dolorem atque ex id maiores dolor eaque libero iste deserunt ea voluptate minima cum laboriosam, qui animi, fuga suscipit necessitatibus vero, autem blanditiis, totam nulla. Quo, et. Quisquam commodi voluptatum dolorem aspernatur, distinctio et ullam laborum laboriosam quo nisi, praesentium quaerat ab excepturi. Illum harum doloremque, accusantium, beatae culpa assumenda laboriosam, quos mollitia aperiam dolorem praesentium minus!</p>
</div>
debug
De component debug maakt serienummering van component naar DOM mogelijk.
<a-scene debug></a-scene>
Serienummercomponent-naar-DOM
Om prestatieredenen werkt A-Frame standaard de DOM niet bij met componentgegevens. Als we de DOM-inspecteur van de browser openen, zien we dat alleen de componentnamen (en niet de waarden) zichtbaar zijn.
<a-entity geometry material position rotation></a-entity>
A-Frame slaat de componentgegevens op in het geheugen. Het bijwerken van de DOM kost CPU-tijd voor het converteren van interne componentgegevens naar tekenreeksen. Als we de DOM-update voor foutopsporing willen zien, kunnen we de foutopsporingscomponent aan de scène toevoegen. Componenten controleren op een ingeschakelde foutopsporingscomponent voordat ze proberen te serialiseren naar de DOM. Dan kunnen we componentgegevens in de DOM bekijken:
<a-entity geometry="primitive: box" material="color: red" position="1 2 3" rotation="0 180 0"></a-entity>
Zorg ervoor dat dit component niet actief is in productie.
Handmatig serialiseren naar DOM
Gebruik Entity.flushToDOM of Component.flushToDOM om handmatig naar DOM te serialiseren:
document.querySelector('a-entity').components.position.flushToDOM(); // Flush a component.
document.querySelector('a-entity').flushToDOM(); // Flush an entity.
document.querySelector('a-entity').flushToDOM(true); // Flush an entity and its children.
document.querySelector('a-scene').flushToDOM(true); // Flush every entity.
Content-scripts uitvoeren op de scène
De aanbevolen manier is om een component te schrijven en deze aan het scene-element te koppelen.
De scène en zijn kinderen worden vóór dit onderdeel geïnitialiseerd.
AFRAME.registerComponent('do-something', {
init: function () {
var sceneEl = this.el;
}
});
<a-scene do-something></a-scene>
Als u om een bepaalde reden liever geen speciaal onderdeel wilt schrijven, moet u wachten tot de scène is geïnitialiseerd en gekoppeld:
var scene = document.querySelector('a-scene');
if (scene.hasLoaded) {
run();
} else {
scene.addEventListener('loaded', run);
}
function run () {
var entity = scene.querySelector('a-entity');
entity.setAttribute('material', 'color', 'red');
}