【问题标题】:Three.js --> What represent the THREE in THREE.sceneThree.js --> THREE.scene 中的三代表什么
【发布时间】:2022-01-05 23:28:06
【问题描述】:

我是 JS 的新手,我尝试使用库 three.js 做一些动画。

我试着理解指令: const scene = new THREE.Scene();

我不明白为什么我们必须把 THREE(在 THREE.Scene 中),我们不能简单地写 const scene = new Scene(); ?

图书馆本身的“三”从何而来?

这是我的 html 文件:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script src="./three.js"></script>
    <script src="./script.js"></script> 
</body>
</html>

我的 JS 文件只包含 console.log(THREE),它返回一个对象(在控制台日志中)。

谁能更好地解释我从哪里来?

感谢您的帮助。

【问题讨论】:

  • THREE 视为存储所有对象on the left column 的文件夹。以这种方式组织数百个对象有助于保持代码整洁。例如,您可以使用变量名Camera,因为它与THREE.Camera 不冲突。如果该对象不在 THREE 中,那么变量名称 Camera 将被占用,您将花费大量时间遇到此类问题。

标签: javascript three.js scene


【解决方案1】:

THREE 是库的命名空间。它本质上是一个包含库的所有方法和属性的大对象。为了访问这些方法/属性,您必须通过命名空间,因为这些属性不是全局的 - 只有命名空间对象是全局的,而不是其他任何东西。

库的代码可能会做一些接近于:

(() => {
  const THREE = {};
  // lots and lots of code that assigns to properties of THREE
  window.THREE = THREE;
})();

这种模式在库中非常常见——它们将大量内容分配给一个大对象,并在全局范围内公开该大对象。通常,任何想要使用该库的东西都必须通过大对象。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-01-30
    • 1970-01-01
    • 2014-04-02
    • 2014-08-07
    • 2019-12-02
    • 2019-09-08
    • 2015-01-27
    • 2016-10-28
    相关资源
    最近更新 更多