【发布时间】:2014-06-19 04:19:02
【问题描述】:
我正在使用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();
}
然后使用KeyDown 事件切换enableControls。这似乎可行,因为当enableControls 为假时,我可以在不移动相机的情况下旋转对象。但是,当我再次update 时,相机会显着移动(它会移动到它本来应该基于我在没有更新时完成的点击/拖动的位置)。
我分别尝试了这两种方法,但没有成功。
【问题讨论】:
-
试试
controls.enabled = false;另外,你可能不需要controls.addEventListener( 'change', render ); -
效果很好,我觉得自己像个白痴。绝对将其发布为答案。
标签: javascript three.js