A-frame 学习笔记-原语Primitives

500 阅读2分钟

原语Primitives

这一节开始正式进入A-frame的学习,介绍一个基础的概念-原语

HTML

毕竟是写网页么,离不开html,没有相关基础的同学可以自己看看w3school等网站先学习一下基础,都是网页的开发么,A-frame可以和很多框架一起使用,包括React,Vue.js,Angular,d3.js,jQuery等。

原语Primitives

在底层上,A-Frame是一个实体-组件(entity-component)框架,基于three.js并以声明的方式来暴露编程接口。 A-Frame提供一些基本的元素如 <a-box><a-sky>,这些被称之为原语(primitives),实际上是实体-组件模式的封装,使其对于初学者容易使用。开发人员可以创建自己的原语。

例子

下面是使用一些基本原语的Hello,WebVR示例。A-Frame提供了用于创建网格,渲染360°内容,自定义环境,放置相机等的原语。

<html>
  <head>
    <script src="https://aframe.io/releases/1.0.3/aframe.min.js"></script>
  </head>
  <body>
    <a-scene>
      <a-box position="-1 0.5 -3" rotation="0 45 0" color="#4CC3D9"></a-box>
      <a-sphere position="0 1.25 -5" radius="1.25" color="#EF2D5E"></a-sphere>
      <a-cylinder position="1 0.75 -3" radius="0.5" height="1.5" color="#FFC65D"></a-cylinder>
      <a-plane position="0 0 -4" rotation="-90 0 0" width="4" height="4" color="#7BC8A4"></a-plane>
      <a-sky color="#ECECEC"></a-sky>
    </a-scene>
  </body>
</html>

原语的机制

原语是一个具备如下特征的<a-entity>

  • 有语义名称(比如:<a-box>
  • 有默认值预设绑定组件
  • 映射或代理HTML属性到组件数据

它们把核心的实体-组件API抽象为:

  • 预先编写有用的组件以及规定的默认值
  • 充当复杂但常见类型的实体(例如<a-sky>)的简写
  • 由于A-Frame将HTML引入了新的方向,为初学者提供了熟悉的html标签

一个例子

在底层实现中,这个 <a-box> 原语为:

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

表示如下实体组件形式:

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

<a-box>将geometry.primitive属性默认为box。并且原语将HTML width属性映射到基础geometry.width 属性,并将HTML 属性color映射到基础 material.color属性。