暂停/关闭three.js TrackballControls

时间:2014-06-18 18:14:43

标签: javascript three.js

我正在使用TrackballControls使用鼠标在场景中旋转相机,但也需要能够使用鼠标旋转场景中的各个对象。我希望能够打开/关闭TrackballControls来实现这一目标。但是,到目前为止,我尝试过的所有内容都存在问题。这就是我的控件的定义方式:

var controls; // global

init()内:

controls = new THREE.TrackballControls( camera );
controls.addEventListener( 'change', render );

最后在animate()

controls.update();

到目前为止,我已经尝试过了:

  1. 删除事件监听器,如下所示:controls.removeEventListener( 'change', render );没有改变任何内容; controls的工作方式与以往一样。

  2. 有条件地更新控件,如下所示:

  3. (全局)

    var enableControls = true; 
    

    (在animate

    if (enableControls == true) {
        controls.update();
    }
    

    然后使用enableControls事件切换KeyDown。这似乎有效,因为当enableControls为假时,我可以在不移动相机的情况下旋转对象。但是,当我再次update时,相机会显着移动(它会移动到基于我在未更新时单击/拖动的位置)。

    我分别尝试了这两个并且没有运气相互结合。

1 个答案:

答案 0 :(得分:5)

要停用TrackballControls,您只需设置

即可
controls.enabled = false;

此外,由于您在动画循环中调用controls.addEventListener( 'change', render );,因此可能不需要controls.update()

three.js r.67