官网中TransformControls的例子时通过键盘W,E,R这些按键去注册不同的动作来对长中的物体操作。
我想要在页面上放置两个按钮,拖动和旋转,按钮点击事件再注册控制器的动作,同时将控制器添加到场景中。
但是总是报错:Uncaught TypeError: Cannot read property 'updateMatrixWorld' of null
当我点击物体时,上方按钮出现,选择动作,然后控制物体移动或时旋转
function tuodong(){
tfcontrols.setMode( "translate" );
tfcontrols.attach( SELECTED );
scene.add( tfcontrols );
}
function xuanzhuan(){
tfcontrols.setMode("rotate");
tfcontrols.attach(SELECTED);
scene.add( tfcontrols );
}
上面就是拖动和旋转物体时控制器的动作 SELECTED 就是一个物体
页面还有onDocumentMouseDown 鼠标点击事件,如果在鼠标点击事件中这样写:
if ( intersects.length > 0 ) {
controls.enabled = false;
SELECTED= objects[item]
tfcontrols.attach( SELECTED );
scene.add( tfcontrols );
//改变鼠标的样式
container.style.cursor = 'move';
}
这样就不会报错,但是只能拖动物体的位置 求赐教~~
找到问题~ 鼠标弹起时间中将SELECTED=null 所以报错了