我正在开发一个three.js项目,该项目在一个对象上实现一些相当标准的轨道控制(在这种情况下是一个粒子云)。
当我在我的根类中使用这个逻辑时(即使用所有的三个.js代码),它完美地工作。然而,我想要做的是将这个逻辑抽象为一个外部类,以便它不受影响。
当我执行此操作时,我的length = length -1
和mousemove
事件不会触发。然而,触摸事件完全发射并且轨道按预期工作。
我已尝试在通话中使用mouseup
,但它似乎没有太大区别。我也试过使用' window'取代'文件'因为我们现在在一个模块中,但似乎也没有。
我错过了什么?该模块如下所示:
preventDefault()
答案 0 :(得分:0)
this
不是您认为的那样。
当您致电controls.enableOrbiting()
时,在enableOrbiting
内,this
与controls
相同。但是当您将this.onDocumentMouseDown
注册为事件处理程序时,this
内的onDocumentMouseDown
等于事件发射器,即document
,而不是controls
。
编辑:在分配后Controls
绑定。
您可以将每个函数绑定到Controls
,如下所示:
var Controls = {}
Controls.onDocumentMouseDown = function (event) {
...
}.bind(Controls);
这种方式this
始终为Controls
,无论方法调用中使用的是this
。