由于目标被视为被动,因此无法阻止被动事件侦听器中的Default。 Three.js TrackballControls

时间:2019-10-08 08:18:25

标签: javascript three.js

我正在使用Three.js制作3D应用程序。在此应用程序中,我需要带有摄像机的控制系统。我正在为此控制系统使用TrackballControlls。但是,当我添加事件侦听器时,出现了一个奇怪的错误:Unable to preventDefault inside passive event listener due to target being treated as passive.,其中包含一个指向以下内容的链接:this chromium website

我了解该错误,但是是否有解决此错误的方法?此错误来自以下行:event.preventDefault();

某些代码:

var control = new THREE.TrackballControls(camera);
control.addEventListener("change", render);

function render() {
    renderer.render(scene, camera);
}

function update() {
    renderer.render(scene, camera);
    control.update();
    requestAnimationFrame(update);
}

我希望有人能够帮助我。预先感谢!

2 个答案:

答案 0 :(得分:1)

  

var control = new THREE.TrackballControls(camera);

请始终像这样创建TrackballControls

var control = new THREE.TrackballControls(camera, renderer.domElement);

有一个新的PR,它将使TrackballControls的第二个参数成为必需参数,并阻止document作为参数。

https://github.com/mrdoob/three.js/pull/17612

three.js R109

答案 1 :(得分:1)

此消息是警告。这不会伤害Web应用程序。

但这有点烦人。您可以使用以下方法关闭此警告:

而不是使用它:

control.addEventListener("change", render);

将其放入代码内:

control.addEventListener("change", render, { passive: false });