如何在 OrbitControls 中编写自定义鼠标滚轮事件处理程序?
How to write a custom mouse wheel event handler in OrbitControls?
我正在使用 ThreeJS 和 OrbitControls 开发 WebGL 应用程序。如何编写和使用自定义事件处理程序来处理滚轮旋转事件?
假设我的自定义处理程序是
function custom_handleMouseWheel(event) { ... }
我尝试将其添加为侦听器:
window.addEventListener("wheel", custom_handleMouseWheel);
但我怀疑这会将我的处理程序添加到现有处理程序列表中(可能只有一个),我必须删除原始处理程序。不知道该怎么做。无论如何,我的处理程序从未被调用,我通过向我的处理程序添加 console.log("Wheel!") 行来检查。
我尝试的另一件事是替换控件对象中的 handleWheelMouse 方法,如下所示:
let original_handleMouseWheel;
function custom_handleMouseWheel(event) {
console.log("Custom Wheel!");
... fancy geometry calculations ...
original_handleMouseWheel(event);
}
// somewhere after defining scene, camera, renderer, etc...
controls = new THREE.OrbitControls( camera );
original_handleMouseWheel = controls.handleMouseWheel;
controls.handleMouseWheel = custom_handleMouseWheel;
但是 console.log 行再次从不执行。
执行此操作的正确方法是什么?
只需设置 controls.enableZoom = false
即可停止 default zoom。
默认的“wheel”侦听器是“domElement”的added,它应该是发送到 OrbitControls 构造函数的第二个参数。
尝试 renderer.domElement.addEventListener('wheel', custom_handleMouseWheel);
我正在使用 ThreeJS 和 OrbitControls 开发 WebGL 应用程序。如何编写和使用自定义事件处理程序来处理滚轮旋转事件?
假设我的自定义处理程序是
function custom_handleMouseWheel(event) { ... }
我尝试将其添加为侦听器:
window.addEventListener("wheel", custom_handleMouseWheel);
但我怀疑这会将我的处理程序添加到现有处理程序列表中(可能只有一个),我必须删除原始处理程序。不知道该怎么做。无论如何,我的处理程序从未被调用,我通过向我的处理程序添加 console.log("Wheel!") 行来检查。
我尝试的另一件事是替换控件对象中的 handleWheelMouse 方法,如下所示:
let original_handleMouseWheel;
function custom_handleMouseWheel(event) {
console.log("Custom Wheel!");
... fancy geometry calculations ...
original_handleMouseWheel(event);
}
// somewhere after defining scene, camera, renderer, etc...
controls = new THREE.OrbitControls( camera );
original_handleMouseWheel = controls.handleMouseWheel;
controls.handleMouseWheel = custom_handleMouseWheel;
但是 console.log 行再次从不执行。
执行此操作的正确方法是什么?
只需设置 controls.enableZoom = false
即可停止 default zoom。
默认的“wheel”侦听器是“domElement”的added,它应该是发送到 OrbitControls 构造函数的第二个参数。
尝试 renderer.domElement.addEventListener('wheel', custom_handleMouseWheel);