THREE.DragControls不是构造函数错误

时间:2018-05-05 10:17:46

标签: javascript drag-and-drop

我正在尝试在three.js中为我的应用程序使用Three.DragControls构造函数。 我运行npm install和npm install three-dragcontrols,接收将依赖项添加到包中的消息。 当我尝试使用新的Three.DragControls时,我收到错误: “THREE.DragControls不是构造函数”

代码:

SELECT * FROM (
    SELECT *
    FROM tblTable
    ORDER BY fldField ASC
    LIMIT 10000000
) tmp
GROUP BY fldField

2 个答案:

答案 0 :(得分:2)

可能的答案(由于SO的愚蠢规则,不能将其作为评论发布):

请分享您导入/要求模块的部分代码。在许多情况下,使用这些用于Three.js的模块,您必须将它们附加到THREE对象。

例如:

// Doesn't work:
THREE.DragControls = require("three-drag-controls");

// Does work:
THREE.DragControls = require("three-drag-controls")(THREE);

这是因为模块实际上是一个返回控件构造函数的函数。如果不首先以THREE作为参数运行该函数,则会得到“THREE.DragControls不是构造函数”。

答案 1 :(得分:0)

对于那些试图遵循“ Three.js拖放教程”并遇到上述错误消息而来这里的用户,解决方案是安装“拖动控件”模块并按照存储库上的用法说明进行操作({{ 3}}),即将导入内容更改为:

import * as THREE from 'three';
import DragControls from 'drag-controls'
DragControls.install({THREE: THREE})

然后以这种方式创建DragControls实例:

var controls = new DragControls( objects, camera, renderer.domElement );

在那之后事情应该起作用。 希望这可以节省一些时间!