Sök…


Introduktion

Primitiva är bara <a-entity> under huven. Detta innebär att primitiv har samma API som enheter som positionering, rotering, skalning och fästning av komponenter. A-Frame tillhandahåller en handfull element som <a-box> eller <a-sky> kallade primitiva som lindar entitet-komponentmönstret för att göra det tilltalande för nybörjare. . Utvecklare kan skapa sina egna primitiv också.

Anmärkningar

Under huven

Primitiva fungerar som ett bekvämhetslager (dvs. syntaktiskt socker) främst för nykomlingar. Kom ihåg för närvarande att primitiva är <a-entity> s under huven att:

  • Har ett semantiskt namn (t.ex. <a-box> )
  • Har ett förinställt paket med komponenter med standardvärden
  • Karta eller proxy-HTML-attribut till [komponent] [komponent] -data

Primitiva liknar prefaberna i Unity . Viss litteratur om enhetens komponent-systemmönster hänvisar till dem som sammansättningar . De abstraherar kärnenhetens komponent-API till:

  • Komponera användbara komponenter tillsammans med föreskrivna standardvärden
  • Verka som en kortfattning för komplexa men vanliga typer av enheter (t.ex. <a-sky> )
  • Ge ett välkänt gränssnitt för nybörjare eftersom A-Frame tar HTML i en ny riktning

Under huven, denna <a-box> primitiva:

<a-box color="red" width="3"></a-box>

representerar denna enhet-komponentform:

<a-entity geometry="primitive: box; width: 3" material="color: red"></a-entity>

<a-box> standard för egenskapen geometry.primitive till box . Och det primitiva mappar HTML width attribut till den underliggande geometry.width egendom samt HTML color attribut till underliggande material.color egendom.

Registrera en primitiv

Vi kan registrera våra egna primitiv (dvs. registrera ett element) med AFRAME.registerPrimitive(name, definition) . definition är ett JavaScript-objekt som definierar dessa egenskaper:

Fast egendom Beskrivning
defaultComponents Objekt som specificerar standardkomponenterna för den primitiva. Knapparna är komponenternas namn och värdena är komponenternas standarddata.
mappningar Objekt som specificerar mappning mellan HTML-attributnamn och komponentegenskapsnamn. Närhelst HTML-attributnamnet uppdateras uppdaterar primitiven motsvarande komponentegenskap. Komponentegenskapen definieras med en punktsyntax ${componentName}.${propertyName} .

Nedan är till exempel A-Frame registrering för <a-box> primitiv:

var extendDeep = AFRAME.utils.extendDeep;

// The mesh mixin provides common material properties for creating mesh-based primitives.
// This makes the material component a default component and maps all the base material properties.
var meshMixin = AFRAME.primitives.getMeshMixin();

AFRAME.registerPrimitive('a-box', extendDeep({}, meshMixin, {
  // Preset default components. These components and component properties will be attached to the entity out-of-the-box.
  defaultComponents: {
    geometry: {primitive: 'box'}
  },

  // Defined mappings from HTML attributes to component properties (using dots as delimiters).
  // If we set `depth="5"` in HTML, then the primitive will automatically set `geometry="depth: 5"`.
  mappings: {
    depth: 'geometry.depth',
    height: 'geometry.height',
    width: 'geometry.width'
  }
}));

Som vi kan använda då

<a-box depth="1.5" height="1.5" width="1.5"></a-box>

representerar denna enhet-komponentform:

<a-entity geometry="primitive: box; depth: 1.5; height: 1.5; width:1.5;"></a-entity>


Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow