我正在使用TrackballControls
使用鼠标旋转场景中的相机,但还需要能够使用鼠标旋转场景中的单个对象。我希望能够打开/关闭TrackballControls
来完成此操作。但是,到目前为止,我尝试过的所有内容都存在问题。这是我的控件的定义方式:
var controls; // global
在
init()
内部:controls = new THREE.TrackballControls( camera );
controls.addEventListener( 'change', render );
最后在
animate()
中:controls.update();
到目前为止,我已经尝试过:
像这样删除事件侦听器:
controls.removeEventListener( 'change', render );
并没有任何改变; controls
的工作与往常一样。像这样有条件地更新控件:
(全球)
var enableControls = true;
(在
animate
中)if (enableControls == true) {
controls.update();
}
然后使用
enableControls
事件切换KeyDown
。这似乎可行,因为当enableControls
为false时,我可以旋转对象而无需移动相机。但是,当我再次update
时,摄像头会明显移动(根据我未进行更新时的单击/拖动操作,摄像头会移动到应有的位置)。我分别尝试了这两种方法,但没有运气。
最佳答案
要禁用TrackballControls
,只需设置
controls.enabled = false;
另外,您可能不需要
controls.addEventListener( 'change', render );
,因为您在动画循环中正在调用controls.update()
。three.js r.67