angular - 类型错误 : OrbitControls is not a constructor in angular2

标签 angular three.js

我正在使用 Three.js 开发 Angular2。

这是我的 Angular cli 配置。

在package.json中:

"three": "^0.81.2",
"three-stl-loader": "^1.0.4",

在 angular.cli.json 中:

    "../node_modules/three/build/three.min.js",
    "../node_modules/three/examples/js/Detector.js",
    "../node_modules/three/examples/js/controls/OrbitControls.js",
    "../node_modules/three/examples/js/controls/TrackballControls.js",
    "../node_modules/three/examples/js/loaders/STLLoader.js",

在组件文件中,我加载了 THREE 和 OrbitControls:

import * as THREE from 'three';    
import PerspectiveCamera = THREE.PerspectiveCamera;
import OrbitControls = THREE.OrbitControls;

当应用程序运行时,控制台会显示以下消息:

'THREE.WebGLRenderer 81
three.js:41149 THREE.WebGLRenderer: .shadowMapEnabled is now .shadowMap.enabled.
three.js:41158 THREE.WebGLRenderer: .shadowMapType is now .shadowMap.type.
'

很明显, Three.js 已加载,但为什么 OrbitControls 找不到?

最佳答案

我遇到了类似的问题。这是我的解决方法,运行以下命令:

npm install three-orbit-controls

编辑 import 语句下@Component 上方的 component.ts 文件:

const THREE = require('three');
const OrbitControls = require('three-orbit-controls')(THREE);

现在它将被称为 OrbitControls 而不是 THREE.OrbitControls

关于angular - 类型错误 : OrbitControls is not a constructor in angular2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41681542/

相关文章:

javascript - 我正在尝试围绕另一个已经在轴上旋转的 (THREE.mesh) 3d 对象旋转。有什么指点吗?

javascript - 如何在 iOS 中创建 WebGL 2 渲染器?

angular - 带 Angular 路由器的 RXJS - 'mergeMap' 不是函数

jquery - 尝试将事件(单击)添加到动态创建按钮angular2 DataTables.net

three.js - webgl 透明度在某些计算机上不起作用,为什么?

javascript - Three.js OrbitControls 补间动画到目标对象的正面(前面)

angular - 模块没有导出成员

Angular 2 - 来自 JSON 数据的动态路由

linux - 部署 Webpack Angular 2 应用

javascript - 在同一视口(viewport)中加载多个 obj 元素