javascript - Requirejs 和 Threejs OrbitControls 如何让它工作?

标签 javascript three.js requirejs

我正在努力让 OrbitControls 与 requirejs 一起使用。

我的配置如下:

我试图在这篇文章的帮助下让它工作 RequireJS and THREE.js Orbit Controls ,但事实并非如此。

requirejs.config({
    baseUrl: './js',
    deps: ['main'],
    paths: {
        threejs: 'three/three.min',
        orbitControls: 'three/controls/OrbitControls',
    },
    shim: {
       'threejs': {
            exports: 'THREE'
        },
        'orbitControls': {
            deps: ['threejs']
        }
    }
});

然后我在 main.js 中定义了三个 再次查看 github 帖子 https://github.com/mrdoob/three.js/issues/9602 的帮助

define('threejs', function ( THREE ) {
    window.THREE = THREE;
    return THREE;
});

然后我在场景中调用轨道控件

var controls = new THREE.OrbitControls(this.camera, this.renderer.domElement);

并出现错误:

Uncaught TypeError: THREE.OrbitControls is not a constructor

我不确定是否需要在类的定义部分中调用 OrbitControls

define(['orbitControls'], function() {
    var controls = new THREE.OrbitControls(this.camera, this.renderer.domElement);
})

但是如果我这样做,我会收到错误

Uncaught ReferenceError: THREE is not defined

我确实知道定义了“三个”,因为场景的其余部分正在按其应有的方式渲染。

我希望有人已经配置了这个并可以帮助我。

最佳答案

弄清楚如何让它发挥作用并希望帮助其他人。

首先,我需要用基本的 require Define 函数包装 OrbitControls.js

define(['threejs'], function(THREE) {
    /* OrbitControls.js */
});

然后在类中使用控件的必须定义“orbitControls”

define(['orbitControls'], function() {
    var controls = new THREE.OrbitControls(this.camera, this.renderer.domElement);
});

然后需要修改addEventListener,如下所示:

controls.addEventListener('change', function() {
                render();
                return false;
            });

关于javascript - Requirejs 和 Threejs OrbitControls 如何让它工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43994930/

相关文章:

javascript - 无法使用 ng-packagr 获取已发布的包

php - 注册后如何显示弹框?

Javascript 输入值向下舍入

javascript - 在输入之间保持 iPad 键盘向上

javascript - Uncaught ReferenceError : model is not defined

THREE.js 没有阴影

javascript - 使用带有 requireJS 的 Node 包客户端?

ajax 上的 Javascript 不断增长

javascript - RequireJS 和 TypeScript 类 - 无法从外部调用函数

javascript - 使用 require js 后,body onload 函数未定义